From a36af9d4bd43c0e33853ef4e75e303ec1ea1341e Mon Sep 17 00:00:00 2001 From: Dmitry Date: Sat, 3 Jan 2026 17:42:05 +0300 Subject: [PATCH] back fix --- .../daos/mixins/soft_delete_mixin.dart | 15 ++++++---- .../lib/database/daos/user_dao.dart | 30 +++++++++++-------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/mnemo_cards_backend/lib/database/daos/mixins/soft_delete_mixin.dart b/mnemo_cards_backend/lib/database/daos/mixins/soft_delete_mixin.dart index abd91d3..67c4bb6 100644 --- a/mnemo_cards_backend/lib/database/daos/mixins/soft_delete_mixin.dart +++ b/mnemo_cards_backend/lib/database/daos/mixins/soft_delete_mixin.dart @@ -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 on DatabaseAccessor { /// /// Возвращает null если запись не найдена или удалена. Future getActiveById(String id) async { - return (selectActive()..where((t) { - final idColumn = (t as dynamic).id; - return idColumn.equals(id); - })) - .getSingleOrNull(); + final query = selectActive() + ..where((t) { + final idColumn = (t as dynamic).id; + return idColumn.equals(id); + }) + ..limit(1); + + final results = await query.get(); + return results.isNotEmpty ? results.first : null; } } diff --git a/mnemo_cards_backend/lib/database/daos/user_dao.dart b/mnemo_cards_backend/lib/database/daos/user_dao.dart index 561cd60..530c826 100644 --- a/mnemo_cards_backend/lib/database/daos/user_dao.dart +++ b/mnemo_cards_backend/lib/database/daos/user_dao.dart @@ -23,11 +23,13 @@ class UserDao extends DatabaseAccessor with _$UserDaoMixin { Future 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 with _$UserDaoMixin { } /// Получить токен по externalUserId (только активные) - Future getTokenByExternalUserId(String externalUserId) { - return (select(tokens) - ..where( - (t) => - t.externalUserId.equals(externalUserId) & - t.isDeleted.equals(false), - ) - ..orderBy([(t) => OrderingTerm.desc(t.created)]) - ..limit(1)) - .getSingleOrNull(); + Future 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); + + final results = await query.get(); + return results.isNotEmpty ? results.first : null; } /// Получить токен пользователя (только активные)