import 'package:drift/drift.dart'; import 'package:drift_postgres/drift_postgres.dart'; import 'users.dart'; import '../converters.dart' show generateUuid; /// Таблица StudySessions - сессии изучения class StudySessions 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)(); TextColumn get sessionId => text().nullable().unique()(); Column get startTime => customType(PgTypes.timestampWithTimezone)(); Column get endTime => customType(PgTypes.timestampWithTimezone) .nullable()(); IntColumn get wordsLearned => integer().withDefault(const Constant(0))(); IntColumn get testsCompleted => integer().withDefault(const Constant(0))(); RealColumn get accuracy => real().withDefault(const Constant(0.0))(); TextColumn get packId => text().nullable()(); TextColumn get testId => text().nullable()(); // Audit Column get createdAt => customType(PgTypes.timestampWithTimezone) .withDefault(now())(); Column get updatedAt => customType(PgTypes.timestampWithTimezone) .withDefault(now())(); BoolColumn get isDeleted => boolean() .customConstraint('NOT NULL DEFAULT FALSE')(); Column get deletedAt => customType(PgTypes.timestampWithTimezone) .nullable()(); @override Set get primaryKey => {id}; }