diff --git a/mnemo_cards_backend/lib/database/daos/payment_dao.dart b/mnemo_cards_backend/lib/database/daos/payment_dao.dart index f24bd17..28d8097 100644 --- a/mnemo_cards_backend/lib/database/daos/payment_dao.dart +++ b/mnemo_cards_backend/lib/database/daos/payment_dao.dart @@ -51,15 +51,15 @@ class PaymentDao extends DatabaseAccessor // (database needs to be regenerated to include id in Payment class) // Use externalToken if available, otherwise query by unique fields if (inserted.externalToken != null && inserted.externalToken!.isNotEmpty) { - final result = await (customSelect( + final results = await (customSelect( 'SELECT id FROM payments WHERE external_token = ? LIMIT 1', variables: [Variable.withString(inserted.externalToken!)], readsFrom: {payments}, - ).map((row) => row.read('id')).getSingleOrNull()); - if (result != null) return result; + ).map((row) => row.read('id')).get()); + if (results.isNotEmpty) return results.first; } // Fallback: query by userId, date, and amount - final result = await (customSelect( + final results = await (customSelect( 'SELECT id FROM payments WHERE user_id = ? AND date = ? AND amount = ? ORDER BY created_at DESC LIMIT 1', variables: [ Variable.withString(payment.userId.value), @@ -67,8 +67,8 @@ class PaymentDao extends DatabaseAccessor Variable.withString(inserted.amount), ], readsFrom: {payments}, - ).map((row) => row.read('id')).getSingleOrNull()); - if (result != null) return result; + ).map((row) => row.read('id')).get()); + if (results.isNotEmpty) return results.first; throw Exception('Failed to retrieve payment ID after creation'); } @@ -154,7 +154,6 @@ class PaymentDao extends DatabaseAccessor } /// Подсчитать платежи пользователя (только активные) - @override Future countPaymentsByUserId(String userId) async { final countExpr = payments.id.count(); final query = selectOnly(payments)