feat: add more detailed history and group per day

This commit is contained in:
2026-08-07 05:07:41 +02:00
parent 1dd7e69aa8
commit 799c1c4045
23 changed files with 2506 additions and 346 deletions
+45 -4
View File
@@ -63,6 +63,21 @@ class TabItems extends Table {
Set<Column> get primaryKey => {id};
}
@DataClassName('TabItemPurchaseRow')
class TabItemPurchases extends Table {
TextColumn get id => text()();
TextColumn get tabItemId =>
text().references(TabItems, #id, onDelete: KeyAction.cascade)();
DateTimeColumn get purchasedAt => dateTime()();
DateTimeColumn get removedAt => dateTime().nullable()();
@override
Set<Column> get primaryKey => {id};
}
@DataClassName('ClosedTabsRow')
class ClosedTabs extends Table {
TextColumn get id => text()();
@@ -93,6 +108,10 @@ class ClosedTabItems extends Table {
IntColumn get unitPriceInCents => integer()();
DateTimeColumn get purchasedAt => dateTime().nullable()();
DateTimeColumn get removedAt => dateTime().nullable()();
@override
Set<Column> get primaryKey => {id};
}
@@ -124,6 +143,7 @@ class AppSettingsTable extends Table {
Products,
BarTabs,
TabItems,
TabItemPurchases,
ClosedTabs,
ClosedTabItems,
@@ -135,7 +155,7 @@ class AppDatabase extends _$AppDatabase {
AppDatabase([QueryExecutor? executor]) : super(executor ?? _openConnection());
@override
int get schemaVersion => 9;
int get schemaVersion => 11;
@override
MigrationStrategy get migration {
@@ -144,14 +164,18 @@ class AppDatabase extends _$AppDatabase {
await migrator.createAll();
},
onUpgrade: (migrator, from, to) async {
Future<bool> hasSettingsColumn(String columnName) async {
Future<bool> hasTableColumn(String tableName, String columnName) async {
final columns = await migrator.database
.customSelect('PRAGMA table_info(app_settings)')
.customSelect('PRAGMA table_info($tableName)')
.get();
return columns.any((column) => column.data['name'] == columnName);
}
Future<bool> hasSettingsColumn(String columnName) {
return hasTableColumn('app_settings', columnName);
}
if (from < 2) {
await migrator.createTable(barTabs);
await migrator.createTable(tabItems);
@@ -170,7 +194,8 @@ class AppDatabase extends _$AppDatabase {
await migrator.createTable(appSettingsTable);
}
if (from < 6) {
if (from < 6 &&
!await hasTableColumn('closed_tabs', 'payment_method')) {
await migrator.addColumn(closedTabs, closedTabs.paymentMethod);
}
@@ -191,6 +216,22 @@ class AppDatabase extends _$AppDatabase {
appSettingsTable.autoLockEnabled,
);
}
if (from < 10) {
if (!await hasTableColumn('closed_tab_items', 'purchased_at')) {
await migrator.addColumn(
closedTabItems,
closedTabItems.purchasedAt,
);
}
if (!await hasTableColumn('closed_tab_items', 'removed_at')) {
await migrator.addColumn(closedTabItems, closedTabItems.removedAt);
}
}
if (from < 11) {
await migrator.createTable(tabItemPurchases);
}
},
);
}