feat: add remote pull and push

This commit is contained in:
2026-09-23 00:19:58 +02:00
parent 9aaba69e3c
commit ccf5165417
29 changed files with 3042 additions and 24 deletions
+41 -4
View File
@@ -38,6 +38,8 @@ class BarTabs extends Table {
DateTimeColumn get closedAt => dateTime().nullable()();
IntColumn get version => integer().withDefault(const Constant(0))();
@override
Set<Column> get primaryKey => {id};
}
@@ -138,24 +140,51 @@ class AppSettingsTable extends Table {
Set<Column> get primaryKey => {id};
}
@DataClassName('RemoteSyncStateRow')
class RemoteSyncState extends Table {
TextColumn get deviceId => text()();
TextColumn get serverCursor => text().nullable()();
DateTimeColumn get lastSuccessfulSyncAt => dateTime().nullable()();
DateTimeColumn get lastAttemptedSyncAt => dateTime().nullable()();
IntColumn get consecutiveFailureCount => integer().withDefault(const Constant(0))();
@override
Set<Column> get primaryKey => {deviceId};
}
@DataClassName('ProcessedRemoteCommandRow')
class ProcessedRemoteCommands extends Table {
TextColumn get commandId => text()();
TextColumn get commandType => text()();
DateTimeColumn get processedAt => dateTime()();
TextColumn get result => text()();
@override
Set<Column> get primaryKey => {commandId};
}
@DriftDatabase(
tables: [
Products,
BarTabs,
TabItems,
TabItemPurchases,
ClosedTabs,
ClosedTabItems,
AppSettingsTable,
RemoteSyncState,
ProcessedRemoteCommands,
],
)
class AppDatabase extends _$AppDatabase {
AppDatabase([QueryExecutor? executor]) : super(executor ?? _openConnection());
@override
int get schemaVersion => 11;
int get schemaVersion => 12;
@override
MigrationStrategy get migration {
@@ -232,6 +261,14 @@ class AppDatabase extends _$AppDatabase {
if (from < 11) {
await migrator.createTable(tabItemPurchases);
}
if (from < 12) {
if (!await hasTableColumn('bar_tabs', 'version')) {
await migrator.addColumn(barTabs, barTabs.version);
}
await migrator.createTable(remoteSyncState);
await migrator.createTable(processedRemoteCommands);
}
},
);
}
@@ -244,4 +281,4 @@ class AppDatabase extends _$AppDatabase {
),
);
}
}
}
File diff suppressed because it is too large Load Diff