Ajout des fonctions admin de Flush et de retour de fichier

adminDb
Corentin RICHARD 3 years ago
parent e5e1de913f
commit 02042e755f

@ -4,22 +4,28 @@ import 'dart:io';
import 'package:postgres/postgres.dart'; import 'package:postgres/postgres.dart';
class AccountsToPostgres { class AccountsToPostgres {
/* Dev Coco */
// static final connection = PostgreSQLConnection("localhost", 5432, 'passworld', static final connection = PostgreSQLConnection("localhost", 5432, 'passworld',
// username: 'pass', password: '1p2a3s4s5'); username: 'pass', password: '1p2a3s4s5');
/* Dev RemRem */ /* Dev RemRem */
// static final connection = PostgreSQLConnection("localhost", 5432, 'passworld', // static final connection = PostgreSQLConnection("localhost", 5432, 'passworld',
// username: 'hel', password: ''); // username: 'hel', password: '');
/* Error severity:
- error : no user
- unknown : DB logic problem
*/
/* Production */ /* Production */
static final connection = PostgreSQLConnection( /*static final connection = PostgreSQLConnection(
Platform.environment["DB_SERVER"]!, Platform.environment["DB_SERVER"]!,
5432, 5432,
Platform.environment["DB_DATABASE"]!, Platform.environment["DB_DATABASE"]!,
username: Platform.environment["DB_USER"], username: Platform.environment["DB_USER"],
password: Platform.environment["DB_PASSWORD"]); password: Platform.environment["DB_PASSWORD"]);
*/
AccountsToPostgres() { AccountsToPostgres() {
//initConnection(); //initConnection();
} }
@ -56,6 +62,7 @@ class AccountsToPostgres {
"salt": salt /*, "salt": salt /*,
"twofa": twoFaStr*/ "twofa": twoFaStr*/
}); });
selectHashById(email);//Testing if the user is created
print("✅ Account succesfully created"); print("✅ Account succesfully created");
} }
@ -63,8 +70,27 @@ class AccountsToPostgres {
List<List<dynamic>> results = await connection.query( List<List<dynamic>> results = await connection.query(
"SELECT hash FROM \"Account\" WHERE id=@identifiant", "SELECT hash FROM \"Account\" WHERE id=@identifiant",
substitutionValues: {"identifiant": id}); substitutionValues: {"identifiant": id});
if(results.length<1){
throw PostgreSQLException("No user for this id",severity: PostgreSQLSeverity.error);
}
if(results.length>1){
throw PostgreSQLException("WARNING ! : multiple user with this id",severity: PostgreSQLSeverity.unknown);
}
return results[0][0];
}
static Future<List<Int>> selectPassFileById(String id) async {
List<List<dynamic>> results = await connection.query("SELECT passwords FROM \"Account\" WHERE id=@identifiant",
substitutionValues: {"identifiant" : id});
if(results.length<1){
throw PostgreSQLException("No user for this id",severity: PostgreSQLSeverity.error);
}
if(results.length>1){
throw PostgreSQLException("WARNING ! : multiple user with this id",severity: PostgreSQLSeverity.unknown);
}
closeConnection();
return results[0][0]; return results[0][0];
} }
@ -83,10 +109,9 @@ class AccountsToPostgres {
} }
} }
static Future<void> updateFilePass(
String identifiant, File passwordFile) async { static Future<void> updateFilePass(String identifiant, File passwordFile) async {
List<int> passwordBlob = List<int> passwordBlob =utf8.encode(await passwordFile.readAsString(encoding: utf8));
utf8.encode(await passwordFile.readAsString(encoding: utf8));
if (selectHashById(identifiant) == null) { if (selectHashById(identifiant) == null) {
return; return;
@ -110,8 +135,24 @@ class AccountsToPostgres {
} }
static Future<void> deleteById(String id) async { static Future<void> deleteById(String id) async {
var deletion = 1;
await connection.query("DELETE FROM \"Account\" WHERE id=@identifiant", await connection.query("DELETE FROM \"Account\" WHERE id=@identifiant",
substitutionValues: {"identifiant": id}); substitutionValues: {"identifiant": id});
try{
selectHashById(id);
}
on PostgreSQLException catch(e){
if(e.severity==PostgreSQLSeverity.error){
deletion = 0;
}
}
if(deletion==1){
throw PostgreSQLException("User not deleted",severity: PostgreSQLSeverity.unknown);
}
} }
// //
@ -124,4 +165,35 @@ class AccountsToPostgres {
print("🟥 ADMIN: get all users"); print("🟥 ADMIN: get all users");
return res; return res;
} }
static Future<void> flushUsers() async{
await connection.query("DELETE FROM \"Account\" ");
List<List<dynamic>> rows = await connection.query("SELECT COUNT(*) FROM \"Account\" ");
if(rows[0][0]!=0){
throw PostgreSQLException("Flush of users did not succeed",severity: PostgreSQLSeverity.unknown);
}
print("🟥 ADMIN: all users deleted");
}
static Future<void> flushTable() async {
await connection.query("DROP TABLE \"Account\" ");
try{
await connection.query("SELECT * FROM \"Account\" ");
throw PostgreSQLException('Table Not dropped',severity: PostgreSQLSeverity.unknown);
}on PostgreSQLException{
print("🟥 ADMIN: tables droped");}
}
} }

@ -0,0 +1,12 @@
import 'dart:io';
import 'package:passworld_api/database/accounts_to_postgres.dart';
import 'package:postgres/postgres.dart';
void main()async{
await AccountsToPostgres.openConnection();
await AccountsToPostgres.flushUsers();
await AccountsToPostgres.flushTable();
AccountsToPostgres.closeConnection();
}
Loading…
Cancel
Save