import 'package:drift/drift.dart'; import '../converters.dart' show generateUuid, JsonListConverter, StringListConverter; import '../postgres_constants.dart'; import 'users.dart'; /// Таблица Payments - платежи class Payments extends Table { TextColumn get id => text().withDefault(const Constant('gen_random_uuid()'))(); 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()(); DateTimeColumn get date => dateTime().withDefault(currentTimestamp)(); // Продукты (JSON array) TextColumn get products => text() .withDefault(const Constant('[]')) .map(const JsonListConverter())(); // Deprecated fields (для обратной совместимости) TextColumn get packs => text() .withDefault(const Constant('[]')) .map(const StringListConverter())(); BoolColumn get subscription => boolean() .withDefault(const Constant(false)) .customConstraint('')(); // PostgreSQL использует нативный BOOLEAN, не нужен CHECK // Audit DateTimeColumn get createdAt => dateTime().withDefault(currentTimestamp)(); DateTimeColumn get updatedAt => dateTime().withDefault(currentTimestamp)(); @override Set get primaryKey => {id}; } // Конвертеры импортированы из converters.dart