feat: add more detailed history and group per day
This commit is contained in:
@@ -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);
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user