mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
Fix for params metadata error, closes #2455
This commit is contained in:
parent
1902735c63
commit
34390bbed8
1 changed files with 12 additions and 5 deletions
|
|
@ -234,6 +234,13 @@ ResolvedRow = collections.namedtuple(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _to_string(value):
|
||||||
|
if isinstance(value, str):
|
||||||
|
return value
|
||||||
|
else:
|
||||||
|
return json.dumps(value, default=str)
|
||||||
|
|
||||||
|
|
||||||
class Datasette:
|
class Datasette:
|
||||||
# Message constants:
|
# Message constants:
|
||||||
INFO = 1
|
INFO = 1
|
||||||
|
|
@ -451,23 +458,23 @@ class Datasette:
|
||||||
if key == "databases":
|
if key == "databases":
|
||||||
continue
|
continue
|
||||||
value = self._metadata_local[key]
|
value = self._metadata_local[key]
|
||||||
if not isinstance(value, str):
|
await self.set_instance_metadata(key, _to_string(value))
|
||||||
value = json.dumps(value)
|
|
||||||
await self.set_instance_metadata(key, value)
|
|
||||||
|
|
||||||
# step 2: database-level metadata
|
# step 2: database-level metadata
|
||||||
for dbname, db in self._metadata_local.get("databases", {}).items():
|
for dbname, db in self._metadata_local.get("databases", {}).items():
|
||||||
for key, value in db.items():
|
for key, value in db.items():
|
||||||
if key in ("tables", "queries"):
|
if key in ("tables", "queries"):
|
||||||
continue
|
continue
|
||||||
await self.set_database_metadata(dbname, key, value)
|
await self.set_database_metadata(dbname, key, _to_string(value))
|
||||||
|
|
||||||
# step 3: table-level metadata
|
# step 3: table-level metadata
|
||||||
for tablename, table in db.get("tables", {}).items():
|
for tablename, table in db.get("tables", {}).items():
|
||||||
for key, value in table.items():
|
for key, value in table.items():
|
||||||
if key == "columns":
|
if key == "columns":
|
||||||
continue
|
continue
|
||||||
await self.set_resource_metadata(dbname, tablename, key, value)
|
await self.set_resource_metadata(
|
||||||
|
dbname, tablename, key, _to_string(value)
|
||||||
|
)
|
||||||
|
|
||||||
# step 4: column-level metadata (only descriptions in metadata.json)
|
# step 4: column-level metadata (only descriptions in metadata.json)
|
||||||
for columnname, column_description in table.get("columns", {}).items():
|
for columnname, column_description in table.get("columns", {}).items():
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue