1# TODO: some smarter way of handling migrations
2
3import apsw
4import apsw.bestpractice
5
6apsw.bestpractice.apply(apsw.bestpractice.recommended)
7
8from millipds import static_config
9
10
11def migrate(con: apsw.Connection):
12 version_now, *_ = con.execute("SELECT db_version FROM config").fetchone()
13
14 assert version_now == 1
15
16 con.execute(
17 """
18 CREATE TABLE did_cache(
19 did TEXT PRIMARY KEY NOT NULL,
20 doc BLOB,
21 created_at INTEGER NOT NULL,
22 expires_at INTEGER NOT NULL
23 ) STRICT, WITHOUT ROWID
24 """
25 )
26
27 con.execute(
28 """
29 CREATE TABLE handle_cache(
30 handle TEXT PRIMARY KEY NOT NULL,
31 did TEXT,
32 created_at INTEGER NOT NULL,
33 expires_at INTEGER NOT NULL
34 ) STRICT, WITHOUT ROWID
35 """
36 )
37
38 con.execute("UPDATE config SET db_version=2")
39
40
41if __name__ == "__main__":
42 with apsw.Connection(static_config.MAIN_DB_PATH) as con:
43 migrate(con)
44
45 print("v1 -> v2 Migration successful")