deleteAccount function

String deleteAccount({
  1. required Entry authDatabase,
  2. required String username,
})

Implementation

String deleteAccount({
  required Entry authDatabase,
  required String username,
}){
  DbObject? accountForDeletion = _getAccount(
    authDatabase: authDatabase,
    username: username,
  );
  if(accountForDeletion == null){
    throw "No account found asociated with the username $username.";
  }else{
    //Delete authentication tokens recursively
    Map<String,dynamic> accountContent = accountForDeletion.view();
    List<String> accessTokens = List<String>.from(accountContent["accessTokens"]);
    for(String token in accessTokens){
      try{
        _removeAccessToken(
          authDatabase: authDatabase,
          accessToken: token,
        );
      }catch(error){
        //Prevent error propagation
      }
    }
    //Delete the account
    authDatabase.select().delete(
      key: "accounts",
      uuid: accountForDeletion.uuid,
    );
    return "Account asociated with $username deleted successfully.";
  }
}