(self)
| 37 | self.sites = {} |
| 38 | |
| 39 | def getSchema(self): |
| 40 | schema = {} |
| 41 | schema["db_name"] = "ContentDb" |
| 42 | schema["version"] = 3 |
| 43 | schema["tables"] = {} |
| 44 | |
| 45 | if not self.getTableVersion("site"): |
| 46 | self.log.debug("Migrating from table version-less content.db") |
| 47 | version = int(self.execute("PRAGMA user_version").fetchone()[0]) |
| 48 | if version > 0: |
| 49 | self.checkTables() |
| 50 | self.execute("INSERT INTO keyvalue ?", {"json_id": 0, "key": "table.site.version", "value": 1}) |
| 51 | self.execute("INSERT INTO keyvalue ?", {"json_id": 0, "key": "table.content.version", "value": 1}) |
| 52 | |
| 53 | schema["tables"]["site"] = { |
| 54 | "cols": [ |
| 55 | ["site_id", "INTEGER PRIMARY KEY ASC NOT NULL UNIQUE"], |
| 56 | ["address", "TEXT NOT NULL"] |
| 57 | ], |
| 58 | "indexes": [ |
| 59 | "CREATE UNIQUE INDEX site_address ON site (address)" |
| 60 | ], |
| 61 | "schema_changed": 1 |
| 62 | } |
| 63 | |
| 64 | schema["tables"]["content"] = { |
| 65 | "cols": [ |
| 66 | ["content_id", "INTEGER PRIMARY KEY UNIQUE NOT NULL"], |
| 67 | ["site_id", "INTEGER REFERENCES site (site_id) ON DELETE CASCADE"], |
| 68 | ["inner_path", "TEXT"], |
| 69 | ["size", "INTEGER"], |
| 70 | ["size_files", "INTEGER"], |
| 71 | ["size_files_optional", "INTEGER"], |
| 72 | ["modified", "INTEGER"] |
| 73 | ], |
| 74 | "indexes": [ |
| 75 | "CREATE UNIQUE INDEX content_key ON content (site_id, inner_path)", |
| 76 | "CREATE INDEX content_modified ON content (site_id, modified)" |
| 77 | ], |
| 78 | "schema_changed": 1 |
| 79 | } |
| 80 | |
| 81 | return schema |
| 82 | |
| 83 | def initSite(self, site): |
| 84 | self.sites[site.address] = site |
no test coverage detected