MCPcopy Index your code
hub / github.com/HelloZeroNet/ZeroNet / getJsonRow

Method getJsonRow

src/Db/DbCursor.py:180–209  ·  view source on GitHub ↗
(self, file_path)

Source from the content-addressed store, hash-verified

178 # Get or create a row for json file
179 # Return: The database row
180 def getJsonRow(self, file_path):
181 directory, file_name = re.match("^(.*?)/*([^/]*)$", file_path).groups()
182 if self.db.schema["version"] == 1:
183 # One path field
184 res = self.execute("SELECT * FROM json WHERE ? LIMIT 1", {"path": file_path})
185 row = res.fetchone()
186 if not row: # No row yet, create it
187 self.execute("INSERT INTO json ?", {"path": file_path})
188 res = self.execute("SELECT * FROM json WHERE ? LIMIT 1", {"path": file_path})
189 row = res.fetchone()
190 elif self.db.schema["version"] == 2:
191 # Separate directory, file_name (easier join)
192 res = self.execute("SELECT * FROM json WHERE ? LIMIT 1", {"directory": directory, "file_name": file_name})
193 row = res.fetchone()
194 if not row: # No row yet, create it
195 self.execute("INSERT INTO json ?", {"directory": directory, "file_name": file_name})
196 res = self.execute("SELECT * FROM json WHERE ? LIMIT 1", {"directory": directory, "file_name": file_name})
197 row = res.fetchone()
198 elif self.db.schema["version"] == 3:
199 # Separate site, directory, file_name (for merger sites)
200 site_address, directory = re.match("^([^/]*)/(.*)$", directory).groups()
201 res = self.execute("SELECT * FROM json WHERE ? LIMIT 1", {"site": site_address, "directory": directory, "file_name": file_name})
202 row = res.fetchone()
203 if not row: # No row yet, create it
204 self.execute("INSERT INTO json ?", {"site": site_address, "directory": directory, "file_name": file_name})
205 res = self.execute("SELECT * FROM json WHERE ? LIMIT 1", {"site": site_address, "directory": directory, "file_name": file_name})
206 row = res.fetchone()
207 else:
208 raise Exception("Dbschema version %s not supported" % self.db.schema.get("version"))
209 return row
210
211 def close(self):
212 self.cursor.close()

Callers 1

updateJsonMethod · 0.80

Calls 2

executeMethod · 0.95
getMethod · 0.45

Tested by

no test coverage detected