MCPcopy
hub / github.com/HelloZeroNet/ZeroNet / getSchema

Method getSchema

src/Content/ContentDb.py:39–81  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

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

Callers 1

__init__Method · 0.95

Calls 3

getTableVersionMethod · 0.80
executeMethod · 0.45
checkTablesMethod · 0.45

Tested by

no test coverage detected