(self, file_path)
| 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() |
no test coverage detected