fixes
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
c2e213d40e
commit
08143b9e30
3 changed files with 56 additions and 33 deletions
|
|
@ -21,9 +21,13 @@ class StatisticsDao extends DatabaseAccessor<AppDatabase>
|
|||
}
|
||||
|
||||
/// Получить сессию по sessionId (только активные)
|
||||
Future<StudySession?> getSessionBySessionId(String sessionId) {
|
||||
return (selectActive()..where((s) => s.sessionId.equals(sessionId)))
|
||||
.getSingleOrNull();
|
||||
Future<StudySession?> getSessionBySessionId(String sessionId) async {
|
||||
final query = selectActive()
|
||||
..where((s) => s.sessionId.equals(sessionId))
|
||||
..limit(1);
|
||||
|
||||
final results = await query.get();
|
||||
return results.isNotEmpty ? results.first : null;
|
||||
}
|
||||
|
||||
/// Получить активные сессии пользователя (не завершенные и не удаленные)
|
||||
|
|
|
|||
|
|
@ -14,10 +14,13 @@ class SubscriptionDao extends DatabaseAccessor<AppDatabase>
|
|||
// ==================== SubscriptionPlans ====================
|
||||
|
||||
/// Получить план подписки по ID
|
||||
Future<SubscriptionPlan?> getPlanById(String id) {
|
||||
return (select(
|
||||
subscriptionPlans,
|
||||
)..where((p) => p.id.equals(id))).getSingleOrNull();
|
||||
Future<SubscriptionPlan?> getPlanById(String id) async {
|
||||
final query = select(subscriptionPlans)
|
||||
..where((p) => p.id.equals(id))
|
||||
..limit(1);
|
||||
|
||||
final results = await query.get();
|
||||
return results.isNotEmpty ? results.first : null;
|
||||
}
|
||||
|
||||
/// Получить все планы подписки
|
||||
|
|
@ -41,22 +44,28 @@ class SubscriptionDao extends DatabaseAccessor<AppDatabase>
|
|||
// ==================== UserSubscriptions ====================
|
||||
|
||||
/// Получить подписку пользователя
|
||||
Future<UserSubscription?> getUserSubscription(String userId) {
|
||||
return (select(userSubscriptions)
|
||||
..where((us) => us.userId.equals(userId))
|
||||
..orderBy([(us) => OrderingTerm.desc(us.finish)]))
|
||||
.getSingleOrNull();
|
||||
Future<UserSubscription?> getUserSubscription(String userId) async {
|
||||
final query = select(userSubscriptions)
|
||||
..where((us) => us.userId.equals(userId))
|
||||
..orderBy([(us) => OrderingTerm.desc(us.finish)])
|
||||
..limit(1);
|
||||
|
||||
final results = await query.get();
|
||||
return results.isNotEmpty ? results.first : null;
|
||||
}
|
||||
|
||||
/// Получить активную подписку пользователя
|
||||
Future<UserSubscription?> getActiveSubscription(String userId) async {
|
||||
final now = PgDateTime(DateTime.now());
|
||||
return (select(userSubscriptions)
|
||||
..where((us) => us.userId.equals(userId))
|
||||
..where((us) => us.start.isSmallerThanValue(now))
|
||||
..where((us) => us.finish.isBiggerThanValue(now))
|
||||
..orderBy([(us) => OrderingTerm.desc(us.finish)]))
|
||||
.getSingleOrNull();
|
||||
final query = select(userSubscriptions)
|
||||
..where((us) => us.userId.equals(userId))
|
||||
..where((us) => us.start.isSmallerThanValue(now))
|
||||
..where((us) => us.finish.isBiggerThanValue(now))
|
||||
..orderBy([(us) => OrderingTerm.desc(us.finish)])
|
||||
..limit(1);
|
||||
|
||||
final results = await query.get();
|
||||
return results.isNotEmpty ? results.first : null;
|
||||
}
|
||||
|
||||
/// Проверить, есть ли у пользователя активная подписка
|
||||
|
|
|
|||
|
|
@ -15,8 +15,13 @@ class UserDao extends DatabaseAccessor<AppDatabase> with _$UserDaoMixin {
|
|||
// ==================== Users ====================
|
||||
|
||||
/// Получить пользователя по ID
|
||||
Future<User?> getUserById(String id) {
|
||||
return (select(users)..where((u) => u.id.equals(id))).getSingleOrNull();
|
||||
Future<User?> getUserById(String id) async {
|
||||
final query = select(users)
|
||||
..where((u) => u.id.equals(id))
|
||||
..limit(1);
|
||||
|
||||
final results = await query.get();
|
||||
return results.isNotEmpty ? results.first : null;
|
||||
}
|
||||
|
||||
/// Получить пользователя с UserData
|
||||
|
|
@ -180,11 +185,13 @@ class UserDao extends DatabaseAccessor<AppDatabase> with _$UserDaoMixin {
|
|||
// ==================== Tokens ====================
|
||||
|
||||
/// Получить токен по значению (только активные)
|
||||
Future<Token?> getTokenByValue(String tokenValue) {
|
||||
return (select(
|
||||
tokens,
|
||||
)..where((t) => t.token.equals(tokenValue) & t.isDeleted.equals(false)))
|
||||
.getSingleOrNull();
|
||||
Future<Token?> getTokenByValue(String tokenValue) async {
|
||||
final query = select(tokens)
|
||||
..where((t) => t.token.equals(tokenValue) & t.isDeleted.equals(false))
|
||||
..limit(1);
|
||||
|
||||
final results = await query.get();
|
||||
return results.isNotEmpty ? results.first : null;
|
||||
}
|
||||
|
||||
/// Получить токен по externalUserId (только активные)
|
||||
|
|
@ -203,14 +210,17 @@ class UserDao extends DatabaseAccessor<AppDatabase> with _$UserDaoMixin {
|
|||
}
|
||||
|
||||
/// Получить токен пользователя (только активные)
|
||||
Future<Token?> getTokenByUserId(String userId) {
|
||||
return (select(tokens)
|
||||
..where((t) => t.userId.equals(userId) & t.isDeleted.equals(false))
|
||||
..where(
|
||||
(t) => t.expires.isBiggerThanValue(PgDateTime(DateTime.now())),
|
||||
)
|
||||
..orderBy([(t) => OrderingTerm.desc(t.created)]))
|
||||
.getSingleOrNull();
|
||||
Future<Token?> getTokenByUserId(String userId) async {
|
||||
final query = select(tokens)
|
||||
..where((t) => t.userId.equals(userId) & t.isDeleted.equals(false))
|
||||
..where(
|
||||
(t) => t.expires.isBiggerThanValue(PgDateTime(DateTime.now())),
|
||||
)
|
||||
..orderBy([(t) => OrderingTerm.desc(t.created)])
|
||||
..limit(1);
|
||||
|
||||
final results = await query.get();
|
||||
return results.isNotEmpty ? results.first : null;
|
||||
}
|
||||
|
||||
/// Создать токен
|
||||
|
|
|
|||
Loading…
Reference in a new issue