[client] Fix schema migration

This commit is contained in:
Abhishek Shroff
2025-05-05 09:14:22 +05:30
parent f9e7fe7ef3
commit b5645f29a6
5 changed files with 20 additions and 15 deletions

View File

@@ -24,7 +24,7 @@ class AppDatabase extends _$AppDatabase {
AppDatabase.fromExecutor({required this.accountId, required QueryExecutor executor}) : super(executor);
@override
int get schemaVersion => 4;
int get schemaVersion => 5;
@override
MigrationStrategy get migration => MigrationStrategy(
@@ -33,17 +33,22 @@ class AppDatabase extends _$AppDatabase {
},
onUpgrade: (m, from, to) async {
if (from < 2) {
m.drop(orderedBookmarks);
m.drop(bookmarks);
m.create(bookmarks);
m.create(orderedBookmarks);
await m.drop(orderedBookmarks);
await m.drop(bookmarks);
await m.create(bookmarks);
await m.create(orderedBookmarks);
}
if (from < 3) {
m.drop(resources);
m.create(resources);
await m.drop(resources);
await m.create(resources);
}
if (from < 4) {
m.create(trashedResources);
await m.create(trashedResources);
}
if (from < 5) {
await m.drop(resources);
await m.create(resources);
await m.create(publinks);
}
},
);

View File

@@ -1,10 +1,10 @@
part of 'parsers.dart';
Iterable<Publink>? parsePublinks(List? data, String? root) {
return data?.map((e) => parsePublink(e.cast(), root: root));
Iterable<Publink> parsePublinks(List<Map> data, String? root) {
return data.map((e) => parsePublink(e, root: root));
}
Publink parsePublink(Map<String, dynamic> data, {String? root}) {
Publink parsePublink(Map data, {String? root}) {
return Publink(
id: data['id'],
created: data['created'] == null ? null : DateTime.fromMillisecondsSinceEpoch(data['created']),

View File

@@ -29,8 +29,8 @@ FullResource parseFullResource(Map<String, dynamic> data) {
permissions: data['permissions'].isEmpty ? null : data['permissions'],
grants: data['grants'].isEmpty || data['grants'] == '{}' ? null : data['grants'],
);
final publinks = parsePublinks(data['publinks'] as List, r.id);
return FullResource(resource: r, publinks: publinks!);
final publinks = parsePublinks((data['publinks'] as List).cast<Map>(), r.id);
return FullResource(resource: r, publinks: publinks);
}
ResourcesCompanion parseResourceAncestor(Map<String, dynamic> data) {

View File

@@ -142,7 +142,7 @@ class ResourceDetailsRow extends StatelessWidget {
stream: context.read<PhylumAccount>().db.countPublinks(resource.id).watchSingle(),
initialData: 0,
builder: (context, snapshot) {
if (snapshot.data! > 0) {
if ((snapshot.data ?? 0) > 0) {
return const Padding(
padding: EdgeInsets.only(right: 6.0),
child: Icon(Icons.public, size: _subtitleIconSize),

View File

@@ -108,7 +108,7 @@ class ResourceInfoView extends StatelessWidget {
stream: context.read<PhylumAccount>().db.selectPublinks(resource.id).map((l) => l.id).watch(),
initialData: const [],
builder: (context, snapshot) {
final publinks = snapshot.data!;
final publinks = snapshot.data ?? const [];
return ExpansionTile(
leading: const Icon(Icons.public),
title: const Text('Public Shares'),