import 'package:drift/drift.dart'; import 'package:drift_postgres/drift_postgres.dart'; import 'users.dart'; /// Таблица UserAchievements - достижения пользователей class UserAchievements extends Table { // ID как String, но фактически UUID (генерируется PostgreSQL на стороне БД) TextColumn get id => text() .withDefault(const CustomExpression('gen_random_uuid()::text'))(); TextColumn get userId => text() .references(Users, #id, onDelete: KeyAction.cascade)(); // Achievement ID (from AchievementDefinitions) TextColumn get achievementId => text()(); // When achievement was unlocked Column get unlockedAt => customType(PgTypes.timestampWithTimezone) .withDefault(now())(); // Progress (0.0 to 1.0) RealColumn get progress => real().withDefault(const Constant(1.0))(); // Audit Column get createdAt => customType(PgTypes.timestampWithTimezone) .withDefault(now())(); Column get updatedAt => customType(PgTypes.timestampWithTimezone) .withDefault(now())(); @override Set get primaryKey => {id}; @override List get customConstraints => [ 'UNIQUE(user_id, achievement_id)', ]; } // Конвертеры импортированы из converters.dart