s
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:
Dmitry 2025-12-14 03:25:54 +03:00
parent 10f827534c
commit 22340d78ef
4 changed files with 26 additions and 26 deletions

View file

@ -26,7 +26,7 @@ class JsonMapConverter extends TypeConverter<Map<String, dynamic>?, String?> {
} }
} }
class JsonListConverter extends TypeConverter<List<dynamic>, String> { class JsonListConverter extends TypeConverter<List<dynamic>, String?> {
const JsonListConverter(); const JsonListConverter();
@override @override
@ -46,12 +46,12 @@ class JsonListConverter extends TypeConverter<List<dynamic>, String> {
} }
} }
class StringListConverter extends TypeConverter<List<String>, String> { class StringListConverter extends TypeConverter<List<String>, String?> {
const StringListConverter(); const StringListConverter();
@override @override
List<String> fromSql(String fromDb) { List<String> fromSql(String? fromDb) {
if (fromDb.isEmpty || fromDb == '[]') return []; if (fromDb == null || fromDb.isEmpty || fromDb == '[]') return [];
try { try {
final decoded = json.decode(fromDb); final decoded = json.decode(fromDb);
return (decoded as List).map((e) => e as String).toList(); return (decoded as List).map((e) => e as String).toList();
@ -93,12 +93,12 @@ class DateTimeListConverter extends TypeConverter<List<DateTime>?, String> {
} }
} }
class IntListConverter extends TypeConverter<List<int>, String> { class IntListConverter extends TypeConverter<List<int>, String?> {
const IntListConverter(); const IntListConverter();
@override @override
List<int> fromSql(String fromDb) { List<int> fromSql(String? fromDb) {
if (fromDb.isEmpty || fromDb == '[]') return []; if (fromDb == null || fromDb.isEmpty || fromDb == '[]') return [];
try { try {
final decoded = json.decode(fromDb); final decoded = json.decode(fromDb);
return (decoded as List).map((e) => e as int).toList(); return (decoded as List).map((e) => e as int).toList();

View file

@ -75,7 +75,7 @@ class $UsersTable extends Users with TableInfo<$UsersTable, User> {
GeneratedColumn<String>( GeneratedColumn<String>(
'purchases', 'purchases',
aliasedName, aliasedName,
false, true,
type: DriftSqlType.string, type: DriftSqlType.string,
requiredDuringInsert: false, requiredDuringInsert: false,
defaultValue: const Constant('[]'), defaultValue: const Constant('[]'),
@ -240,7 +240,7 @@ class $UsersTable extends Users with TableInfo<$UsersTable, User> {
attachedDatabase.typeMapping.read( attachedDatabase.typeMapping.read(
DriftSqlType.string, DriftSqlType.string,
data['${effectivePrefix}purchases'], data['${effectivePrefix}purchases'],
)!, ),
), ),
createdAt: attachedDatabase.typeMapping.read( createdAt: attachedDatabase.typeMapping.read(
PgTypes.timestampWithTimezone, PgTypes.timestampWithTimezone,
@ -262,7 +262,7 @@ class $UsersTable extends Users with TableInfo<$UsersTable, User> {
return $UsersTable(attachedDatabase, alias); return $UsersTable(attachedDatabase, alias);
} }
static TypeConverter<List<String>, String> $converterpurchases = static TypeConverter<List<String>, String?> $converterpurchases =
const StringListConverter(); const StringListConverter();
} }
@ -1058,15 +1058,15 @@ class $UserDatasTable extends UserDatas
return $UserDatasTable(attachedDatabase, alias); return $UserDatasTable(attachedDatabase, alias);
} }
static TypeConverter<List<dynamic>, String> $converterwords = static TypeConverter<List<dynamic>, String?> $converterwords =
const JsonListConverter(); const JsonListConverter();
static TypeConverter<List<String>, String> $convertertags = static TypeConverter<List<String>, String?> $convertertags =
const StringListConverter(); const StringListConverter();
static TypeConverter<List<dynamic>, String> $converterpackProgress = static TypeConverter<List<dynamic>, String?> $converterpackProgress =
const JsonListConverter(); const JsonListConverter();
static TypeConverter<List<DateTime>?, String> $converterstudyDates = static TypeConverter<List<DateTime>?, String> $converterstudyDates =
const DateTimeListConverter(); const DateTimeListConverter();
static TypeConverter<List<dynamic>, String> $converterachievements = static TypeConverter<List<dynamic>, String?> $converterachievements =
const JsonListConverter(); const JsonListConverter();
static TypeConverter<Map<String, dynamic>?, String?> static TypeConverter<Map<String, dynamic>?, String?>
$convertercategoryMinutes = const JsonMapConverter(); $convertercategoryMinutes = const JsonMapConverter();
@ -3641,7 +3641,7 @@ class $CardPacksTable extends CardPacks
return $CardPacksTable(attachedDatabase, alias); return $CardPacksTable(attachedDatabase, alias);
} }
static TypeConverter<List<String>, String> $convertercardsOrder = static TypeConverter<List<String>, String?> $convertercardsOrder =
const StringListConverter(); const StringListConverter();
} }
@ -6734,7 +6734,7 @@ class $SubscriptionPlansTable extends SubscriptionPlans
static TypeConverter<Map<String, dynamic>?, String?> $converterui = static TypeConverter<Map<String, dynamic>?, String?> $converterui =
const JsonMapConverter(); const JsonMapConverter();
static TypeConverter<List<dynamic>, String> $converterfeatures = static TypeConverter<List<dynamic>, String?> $converterfeatures =
const JsonListConverter(); const JsonListConverter();
} }
@ -7314,7 +7314,7 @@ class $UserSubscriptionsTable extends UserSubscriptions
return $UserSubscriptionsTable(attachedDatabase, alias); return $UserSubscriptionsTable(attachedDatabase, alias);
} }
static TypeConverter<List<dynamic>, String> $converterfeatures = static TypeConverter<List<dynamic>, String?> $converterfeatures =
const JsonListConverter(); const JsonListConverter();
} }
@ -7944,9 +7944,9 @@ class $PaymentsTable extends Payments with TableInfo<$PaymentsTable, Payment> {
return $PaymentsTable(attachedDatabase, alias); return $PaymentsTable(attachedDatabase, alias);
} }
static TypeConverter<List<dynamic>, String> $converterproducts = static TypeConverter<List<dynamic>, String?> $converterproducts =
const JsonListConverter(); const JsonListConverter();
static TypeConverter<List<String>, String> $converterpacks = static TypeConverter<List<String>, String?> $converterpacks =
const StringListConverter(); const StringListConverter();
} }
@ -11232,9 +11232,9 @@ class $UserTasksTable extends UserTasks
return $UserTasksTable(attachedDatabase, alias); return $UserTasksTable(attachedDatabase, alias);
} }
static TypeConverter<List<dynamic>, String> $converterrewards = static TypeConverter<List<dynamic>, String?> $converterrewards =
const JsonListConverter(); const JsonListConverter();
static TypeConverter<List<String>, String> $convertertags = static TypeConverter<List<String>, String?> $convertertags =
const StringListConverter(); const StringListConverter();
} }
@ -12949,9 +12949,9 @@ class $PromoCodesCampaignsTable extends PromoCodesCampaigns
return $PromoCodesCampaignsTable(attachedDatabase, alias); return $PromoCodesCampaignsTable(attachedDatabase, alias);
} }
static TypeConverter<List<dynamic>, String> $converterproducts = static TypeConverter<List<dynamic>, String?> $converterproducts =
const JsonListConverter(); const JsonListConverter();
static TypeConverter<List<String>, String> $convertertags = static TypeConverter<List<String>, String?> $convertertags =
const StringListConverter(); const StringListConverter();
} }
@ -14131,7 +14131,7 @@ class $DiscountCampaignsTable extends DiscountCampaigns
return $DiscountCampaignsTable(attachedDatabase, alias); return $DiscountCampaignsTable(attachedDatabase, alias);
} }
static TypeConverter<List<String>, String> $convertertags = static TypeConverter<List<String>, String?> $convertertags =
const StringListConverter(); const StringListConverter();
} }
@ -14665,7 +14665,7 @@ class $DiscountsTable extends Discounts
return $DiscountsTable(attachedDatabase, alias); return $DiscountsTable(attachedDatabase, alias);
} }
static TypeConverter<List<dynamic>, String> $converterproducts = static TypeConverter<List<dynamic>, String?> $converterproducts =
const JsonListConverter(); const JsonListConverter();
} }

View file

@ -19,6 +19,7 @@ class Users extends Table {
// Purchases (JSON array) // Purchases (JSON array)
TextColumn get purchases => text() TextColumn get purchases => text()
.nullable()
.withDefault(const Constant('[]')) .withDefault(const Constant('[]'))
.map(const StringListConverter())(); .map(const StringListConverter())();

View file

@ -131,7 +131,6 @@ class UserManager {
externalUserId: externalId, externalUserId: externalId,
name: drift.Value(name), name: drift.Value(name),
email: drift.Value(email), email: drift.Value(email),
// Explicitly set fields with default values to ensure they're returned by insertReturning
admin: drift.Value(false), admin: drift.Value(false),
purchases: drift.Value([]), purchases: drift.Value([]),
createdAt: drift.Value(PgDateTime(now)), createdAt: drift.Value(PgDateTime(now)),