A from-scratch atproto PDS implementation in Python (mirrors https://github.com/DavidBuchanan314/millipds)

make db tables STRICT, some WITHOUT ROWID, others AUTOINCREMENT

+13 -13
+2 -2
migration_scripts/v2.py
··· 19 19 doc TEXT, 20 20 created_at INTEGER NOT NULL, 21 21 expires_at INTEGER NOT NULL 22 - ) 22 + ) STRICT, WITHOUT ROWID 23 23 """ 24 24 ) 25 25 ··· 30 30 did TEXT, 31 31 created_at INTEGER NOT NULL, 32 32 expires_at INTEGER NOT NULL 33 - ) 33 + ) STRICT, WITHOUT ROWID 34 34 """ 35 35 ) 36 36
+11 -11
src/millipds/database.py
··· 107 107 bsky_appview_pfx TEXT, 108 108 bsky_appview_did TEXT, 109 109 jwt_access_secret TEXT NOT NULL 110 - ) 110 + ) STRICT 111 111 """ 112 112 ) 113 113 ··· 125 125 self.con.execute( 126 126 """ 127 127 CREATE TABLE user( 128 - id INTEGER PRIMARY KEY NOT NULL, 128 + id INTEGER PRIMARY KEY AUTOINCREMENT, 129 129 did TEXT NOT NULL, 130 130 handle TEXT NOT NULL, 131 131 prefs BLOB NOT NULL, ··· 134 134 head BLOB NOT NULL, 135 135 rev TEXT NOT NULL, 136 136 commit_bytes BLOB NOT NULL 137 - ) 137 + ) STRICT 138 138 """ 139 139 ) 140 140 ··· 147 147 seq INTEGER PRIMARY KEY AUTOINCREMENT, 148 148 timestamp INTEGER NOT NULL, 149 149 msg BLOB NOT NULL 150 - ) 150 + ) STRICT 151 151 """ 152 152 ) 153 153 ··· 161 161 value BLOB NOT NULL, 162 162 FOREIGN KEY (repo) REFERENCES user(id), 163 163 PRIMARY KEY (repo, cid) 164 - ) 164 + ) STRICT, WITHOUT ROWID 165 165 """ 166 166 ) 167 167 self.con.execute("CREATE INDEX mst_since ON mst(since)") ··· 177 177 value BLOB NOT NULL, 178 178 FOREIGN KEY (repo) REFERENCES user(id), 179 179 PRIMARY KEY (repo, nsid, rkey) 180 - ) 180 + ) STRICT, WITHOUT ROWID 181 181 """ 182 182 ) 183 183 self.con.execute("CREATE INDEX record_since ON record(since)") ··· 191 191 self.con.execute( 192 192 """ 193 193 CREATE TABLE blob( 194 - id INTEGER PRIMARY KEY NOT NULL, 194 + id INTEGER PRIMARY KEY AUTOINCREMENT, 195 195 repo INTEGER NOT NULL, 196 196 cid BLOB, 197 197 refcount INTEGER NOT NULL, 198 198 since TEXT, 199 199 FOREIGN KEY (repo) REFERENCES user(id) 200 - ) 200 + ) STRICT 201 201 """ 202 202 ) 203 203 self.con.execute( ··· 214 214 data BLOB NOT NULL, 215 215 PRIMARY KEY (blob, idx), 216 216 FOREIGN KEY (blob) REFERENCES blob(id) 217 - ) 217 + ) STRICT, WITHOUT ROWID 218 218 """ 219 219 ) 220 220 ··· 227 227 doc TEXT, 228 228 created_at INTEGER NOT NULL, 229 229 expires_at INTEGER NOT NULL 230 - ) 230 + ) STRICT, WITHOUT ROWID 231 231 """ 232 232 ) 233 233 ··· 239 239 did TEXT, 240 240 created_at INTEGER NOT NULL, 241 241 expires_at INTEGER NOT NULL 242 - ) 242 + ) STRICT, WITHOUT ROWID 243 243 """ 244 244 ) 245 245