back fix
Some checks are pending
Backend CI / test (push) Waiting to run
Backend CI / build (push) Blocked by required conditions
Deploy Mnemo Cards / Deploy Backend (push) Waiting to run
Deploy Mnemo Cards / Deploy Web App (push) Blocked by required conditions
Deploy Mnemo Cards / Final Verification (push) Blocked by required conditions
Some checks are pending
Backend CI / test (push) Waiting to run
Backend CI / build (push) Blocked by required conditions
Deploy Mnemo Cards / Deploy Backend (push) Waiting to run
Deploy Mnemo Cards / Deploy Web App (push) Blocked by required conditions
Deploy Mnemo Cards / Final Verification (push) Blocked by required conditions
This commit is contained in:
parent
958bedf65a
commit
a36af9d4bd
2 changed files with 26 additions and 19 deletions
|
|
@ -1,5 +1,4 @@
|
|||
import 'package:drift/drift.dart';
|
||||
import 'package:drift_postgres/drift_postgres.dart';
|
||||
import 'package:mnemo_cards_backend/database/database.dart';
|
||||
|
||||
/// Миксин для добавления soft delete функциональности в DAO
|
||||
|
|
@ -45,10 +44,14 @@ mixin SoftDeleteMixin<T extends Table, D> on DatabaseAccessor<AppDatabase> {
|
|||
///
|
||||
/// Возвращает null если запись не найдена или удалена.
|
||||
Future<D?> getActiveById(String id) async {
|
||||
return (selectActive()..where((t) {
|
||||
final query = selectActive()
|
||||
..where((t) {
|
||||
final idColumn = (t as dynamic).id;
|
||||
return idColumn.equals(id);
|
||||
}))
|
||||
.getSingleOrNull();
|
||||
})
|
||||
..limit(1);
|
||||
|
||||
final results = await query.get();
|
||||
return results.isNotEmpty ? results.first : null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,11 +23,13 @@ class UserDao extends DatabaseAccessor<AppDatabase> with _$UserDaoMixin {
|
|||
Future<UserWithData?> getUserWithDataById(String id) async {
|
||||
final query = select(users).join([
|
||||
leftOuterJoin(userDatas, userDatas.userId.equalsExp(users.id)),
|
||||
])..where(users.id.equals(id));
|
||||
])..where(users.id.equals(id))
|
||||
..limit(1);
|
||||
|
||||
final result = await query.getSingleOrNull();
|
||||
if (result == null) return null;
|
||||
final results = await query.get();
|
||||
if (results.isEmpty) return null;
|
||||
|
||||
final result = results.first;
|
||||
return UserWithData(
|
||||
user: result.readTable(users),
|
||||
userData: result.readTableOrNull(userDatas),
|
||||
|
|
@ -183,16 +185,18 @@ class UserDao extends DatabaseAccessor<AppDatabase> with _$UserDaoMixin {
|
|||
}
|
||||
|
||||
/// Получить токен по externalUserId (только активные)
|
||||
Future<Token?> getTokenByExternalUserId(String externalUserId) {
|
||||
return (select(tokens)
|
||||
Future<Token?> getTokenByExternalUserId(String externalUserId) async {
|
||||
final query = select(tokens)
|
||||
..where(
|
||||
(t) =>
|
||||
t.externalUserId.equals(externalUserId) &
|
||||
t.isDeleted.equals(false),
|
||||
)
|
||||
..orderBy([(t) => OrderingTerm.desc(t.created)])
|
||||
..limit(1))
|
||||
.getSingleOrNull();
|
||||
..limit(1);
|
||||
|
||||
final results = await query.get();
|
||||
return results.isNotEmpty ? results.first : null;
|
||||
}
|
||||
|
||||
/// Получить токен пользователя (только активные)
|
||||
|
|
|
|||
Loading…
Reference in a new issue