import 'package:drift/drift.dart'; import 'package:drift_postgres/drift_postgres.dart'; import '../converters.dart' show JsonListConverter, StringListConverter; import 'users.dart'; /// Таблица Payments - платежи class Payments 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 amount => text()(); TextColumn get currency => text()(); // Статус и платежная система (enum as string) TextColumn get status => text()(); // PaymentStatus TextColumn get paymentSystem => text()(); // PaymentSystem TextColumn get externalToken => text().nullable()(); TextColumn get meta => text().nullable()(); Column get date => customType(PgTypes.timestampWithTimezone).withDefault(now())(); // Продукты (JSON array) TextColumn get products => text().withDefault(const Constant('[]')).map(const JsonListConverter())(); // 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}; } // Конвертеры импортированы из converters.dart