A from-scratch atproto PDS implementation in Python (mirrors https://github.com/DavidBuchanan314/millipds)
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")