awaitconnection.query("DELETE FROM \"Account\" WHERE id=@identifiant",
substitutionValues:{"identifiant":id});
try{
try{
selectHashById(id);
}
onPostgreSQLExceptioncatch(e){
if(e.severity==PostgreSQLSeverity.error){
}onPostgreSQLExceptioncatch(e){
if(e.severity==PostgreSQLSeverity.error){
deletion=0;
}
}
if(deletion==1){
throwPostgreSQLException("User not deleted",severity:PostgreSQLSeverity.unknown);
if(deletion==1){
throwPostgreSQLException("User not deleted",
severity:PostgreSQLSeverity.unknown);
}
}
//
@ -168,69 +170,70 @@ class AccountsToPostgres {
returnres;
}
staticFuture<void>flushUsers()async{
staticFuture<void>flushUsers()async{
awaitconnection.query("DELETE FROM \"Account\"");
List<List<dynamic>>rows=awaitconnection.query("SELECT COUNT(*) FROM \"Account\"");
List<List<dynamic>>rows=
awaitconnection.query("SELECT COUNT(*) FROM \"Account\"");
if(rows[0][0]!=0){
throwPostgreSQLException("Flush of users did not succeed",severity:PostgreSQLSeverity.unknown);
if(rows[0][0]!=0){
throwPostgreSQLException("Flush of users did not succeed",
severity:PostgreSQLSeverity.unknown);
}
print("🟥 ADMIN: all users deleted");
}
staticFuture<void>flushTable()async{
awaitconnection.query("DROP TABLE \"Account\"");
try{
awaitconnection.query("SELECT * FROM \"Account\"");
throwPostgreSQLException('Table Not dropped',severity:PostgreSQLSeverity.unknown);
}onPostgreSQLException{
print("🟥 ADMIN: tables droped");}
try{
awaitconnection.query("SELECT * FROM \"Account\"");
throwPostgreSQLException('Table Not dropped',
severity:PostgreSQLSeverity.unknown);
}onPostgreSQLException{
print("🟥 ADMIN: tables droped");
}
}
staticFuture<void>createLogsTable()async{
awaitconnection.query("CREATE TABLE IF NOT EXISTS Log(wwhen TIMESTAMP,wwho char(20),whow char(20),wwhat varchar(800));")
.then((value){
staticFuture<void>createLogsTable()async{
awaitconnection
.query(
"CREATE TABLE IF NOT EXISTS Log(wwhen TIMESTAMP,wwho char(20),whow char(20),wwhat varchar(800));")
.then((value){
print("⬜ ADMIN: Logs table created");
});
}
staticFuture<void>createLogingFunction()async{
awaitconnection.query("CREATE OR REPLACE FUNCTION log()RETURNS TRIGGER AS \$\$ BEGIN IF(TG_OP='DELETE')THEN INSERT INTO Log VALUES(CURRENT_TIMESTAMP,current_role,TG_OP,OLD.id||' '||OLD.hash||' '||OLD.salt); RETURN OLD; ELSEIF(TG_OP='INSERT')THEN INSERT INTO Log VALUES(CURRENT_TIMESTAMP,current_role,TG_OP,NEW.id||' '||NEW.hash||' '||NEW.salt);RETURN NEW; ELSE INSERT INTO Log VALUES(CURRENT_TIMESTAMP,current_role,TG_OP,OLD.id||' '||OLD.hash||' '||OLD.salt||' => '||NEW.id||' '||NEW.hash||' '||NEW.salt); RETURN NEW; END IF; END; \$\$ LANGUAGE plpgsql;")
.then((value){
staticFuture<void>createLogingFunction()async{
awaitconnection
.query(
"CREATE OR REPLACE FUNCTION log()RETURNS TRIGGER AS \$\$ BEGIN IF(TG_OP='DELETE')THEN INSERT INTO Log VALUES(CURRENT_TIMESTAMP,current_role,TG_OP,OLD.id||' '||OLD.hash||' '||OLD.salt); RETURN OLD; ELSEIF(TG_OP='INSERT')THEN INSERT INTO Log VALUES(CURRENT_TIMESTAMP,current_role,TG_OP,NEW.id||' '||NEW.hash||' '||NEW.salt);RETURN NEW; ELSE INSERT INTO Log VALUES(CURRENT_TIMESTAMP,current_role,TG_OP,OLD.id||' '||OLD.hash||' '||OLD.salt||' => '||NEW.id||' '||NEW.hash||' '||NEW.salt); RETURN NEW; END IF; END; \$\$ LANGUAGE plpgsql;")
.then((value){
print("⬜ ADMIN: Logs function created");
});
}
staticFuture<void>createTriggerLogs()async{
awaitconnection.query("CREATE TRIGGER trace_delete BEFORE DELETE OR INSERT OR UPDATE ON \"Account\" FOR EACH ROW EXECUTE FUNCTION log ();")
.then((value){
staticFuture<void>createTriggerLogs()async{
awaitconnection
.query(
"CREATE TRIGGER trace_delete BEFORE DELETE OR INSERT OR UPDATE ON \"Account\" FOR EACH ROW EXECUTE FUNCTION log ();")
.then((value){
print("⬜ ADMIN: Logs trigger created");
});
}
staticFuture<void>dropTrggerLogs()async{
awaitconnection.query("DROP Trigger trace_delete ON \"Account\"")
.then((value){
staticFuture<void>dropTrggerLogs()async{
awaitconnection
.query("DROP Trigger trace_delete ON \"Account\"")
.then((value){
print("⬛ ADMIN: Logs trigger dropped");
});
}
staticFuture<void>flushLogs()async{
awaitconnection.query("DELETE FROM Log")
.then((value){
staticFuture<void>flushLogs()async{
awaitconnection.query("DELETE FROM Log").then((value){