Initial and done prolly
This commit is contained in:
commit
6f88b9966f
175 changed files with 15445 additions and 0 deletions
84
lib/db/crud/user_crud.dart
Normal file
84
lib/db/crud/user_crud.dart
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
part of '../database.dart';
|
||||
|
||||
extension UserCrud on AppDatabase {
|
||||
String hashPassword(String password) {
|
||||
final passwordBytes = utf8.encode(password);
|
||||
final hashedPassword = sha512224.convert(passwordBytes);
|
||||
return hashedPassword.toString();
|
||||
}
|
||||
|
||||
Future<UserData?> addUser({
|
||||
required String login,
|
||||
required String password,
|
||||
}) async {
|
||||
return await managers.user.createReturningOrNull((c) => c(
|
||||
login: login,
|
||||
password: hashPassword(password),
|
||||
));
|
||||
}
|
||||
|
||||
Future<List<UserData>> getUsers() async {
|
||||
return await managers.user.get();
|
||||
}
|
||||
|
||||
Future<bool> anyUserExists() async {
|
||||
return await managers.user.exists();
|
||||
}
|
||||
|
||||
Future<UserData?> findUser({
|
||||
required String login,
|
||||
required String password,
|
||||
}) async {
|
||||
return await managers.user
|
||||
.filter((f) => f.login(login))
|
||||
.filter((f) => f.password(hashPassword(password)))
|
||||
.getSingleOrNull();
|
||||
}
|
||||
|
||||
Future<UserData> getUser(UserData user) async {
|
||||
return await managers.user.filter((f) => f.id(user.id)).getSingle();
|
||||
}
|
||||
|
||||
Future<bool> updateUser(
|
||||
UserData currentUser,
|
||||
UserData updatedUser, {
|
||||
String? login,
|
||||
String? password,
|
||||
}) async {
|
||||
if (currentUser.id == updatedUser.id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
await managers.user.filter((f) => f.id(updatedUser.id)).update((u) => u(
|
||||
login: Value.absentIfNull(login),
|
||||
password: Value.absentIfNull(
|
||||
password != null ? hashPassword(password) : null),
|
||||
));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Future<bool> updateUserPassword(
|
||||
UserData user, {
|
||||
required String password,
|
||||
}) async {
|
||||
await managers.user.filter((f) => f.id(user.id)).update((u) => u(
|
||||
password: Value(hashPassword(password)),
|
||||
));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Future<bool> deleteUser(UserData user) async {
|
||||
final usersCount = await managers.user.count();
|
||||
if (usersCount == 0) {
|
||||
return false;
|
||||
}
|
||||
final deletedCount = await managers.user
|
||||
.filter(
|
||||
(f) => f.id(user.id),
|
||||
)
|
||||
.delete();
|
||||
return deletedCount != 0;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue