@@ -12,6 +12,8 @@ use crate::bucket_priority::BucketPriority;
12
12
use crate :: error:: { PSResult , SQLiteError } ;
13
13
use crate :: fix035:: apply_v035_fix;
14
14
15
+ pub const LATEST_VERSION : i32 = 9 ;
16
+
15
17
pub fn powersync_migrate (
16
18
ctx : * mut sqlite:: context ,
17
19
target_version : i32 ,
@@ -333,5 +335,40 @@ json_object('sql', 'DELETE FROM ps_migration WHERE id >= 7')
333
335
local_db. exec_safe ( & stmt) . into_db_result ( local_db) ?;
334
336
}
335
337
338
+ if current_version < 8 && target_version >= 8 {
339
+ let stmt = "\
340
+ ALTER TABLE ps_sync_state RENAME TO ps_sync_state_old;
341
+ CREATE TABLE ps_sync_state (
342
+ priority INTEGER NOT NULL PRIMARY KEY,
343
+ last_synced_at TEXT NOT NULL
344
+ ) STRICT;
345
+ INSERT INTO ps_sync_state (priority, last_synced_at)
346
+ SELECT priority, MAX(last_synced_at) FROM ps_sync_state_old GROUP BY priority;
347
+ DROP TABLE ps_sync_state_old;
348
+ INSERT INTO ps_migration(id, down_migrations) VALUES(8, json_array(
349
+ json_object('sql', 'ALTER TABLE ps_sync_state RENAME TO ps_sync_state_new'),
350
+ json_object('sql', 'CREATE TABLE ps_sync_state (\n priority INTEGER NOT NULL,\n last_synced_at TEXT NOT NULL\n ) STRICT'),
351
+ json_object('sql', 'INSERT INTO ps_sync_state SELECT * FROM ps_sync_state_new'),
352
+ json_object('sql', 'DROP TABLE ps_sync_state_new'),
353
+ json_object('sql', 'DELETE FROM ps_migration WHERE id >= 8')
354
+ ));
355
+ " ;
356
+ local_db. exec_safe ( & stmt) . into_db_result ( local_db) ?;
357
+ }
358
+
359
+ if current_version < 9 && target_version >= 9 {
360
+ let stmt = "\
361
+ ALTER TABLE ps_buckets ADD COLUMN count_at_last INTEGER NOT NULL DEFAULT 0;
362
+ ALTER TABLE ps_buckets ADD COLUMN count_since_last INTEGER NOT NULL DEFAULT 0;
363
+ INSERT INTO ps_migration(id, down_migrations) VALUES(9, json_array(
364
+ json_object('sql', 'ALTER TABLE ps_buckets DROP COLUMN count_at_last'),
365
+ json_object('sql', 'ALTER TABLE ps_buckets DROP COLUMN count_since_last'),
366
+ json_object('sql', 'DELETE FROM ps_migration WHERE id >= 9')
367
+ ));
368
+ " ;
369
+
370
+ local_db. exec_safe ( stmt) . into_db_result ( local_db) ?;
371
+ }
372
+
336
373
Ok ( ( ) )
337
374
}
0 commit comments