mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
Prettier CREATE TABLE SQL for _internal
This commit is contained in:
parent
8919f99c2f
commit
90eba4c3ca
1 changed files with 61 additions and 48 deletions
|
|
@ -1,82 +1,95 @@
|
|||
import textwrap
|
||||
|
||||
|
||||
async def init_internal_db(db):
|
||||
await db.execute_write(
|
||||
"""
|
||||
textwrap.dedent(
|
||||
"""
|
||||
CREATE TABLE databases (
|
||||
"database_name" TEXT PRIMARY KEY,
|
||||
"path" TEXT,
|
||||
"is_memory" INTEGER,
|
||||
"schema_version" INTEGER
|
||||
database_name TEXT PRIMARY KEY,
|
||||
path TEXT,
|
||||
is_memory INTEGER,
|
||||
schema_version INTEGER
|
||||
)
|
||||
""",
|
||||
"""
|
||||
),
|
||||
block=True,
|
||||
)
|
||||
await db.execute_write(
|
||||
"""
|
||||
textwrap.dedent(
|
||||
"""
|
||||
CREATE TABLE tables (
|
||||
"database_name" TEXT,
|
||||
"table_name" TEXT,
|
||||
"rootpage" INTEGER,
|
||||
"sql" TEXT,
|
||||
database_name TEXT,
|
||||
table_name TEXT,
|
||||
rootpage INTEGER,
|
||||
sql TEXT,
|
||||
PRIMARY KEY (database_name, table_name),
|
||||
FOREIGN KEY (database_name) REFERENCES databases(database_name)
|
||||
)
|
||||
""",
|
||||
"""
|
||||
),
|
||||
block=True,
|
||||
)
|
||||
await db.execute_write(
|
||||
"""
|
||||
textwrap.dedent(
|
||||
"""
|
||||
CREATE TABLE columns (
|
||||
"database_name" TEXT,
|
||||
"table_name" TEXT,
|
||||
"cid" INTEGER,
|
||||
"name" TEXT,
|
||||
"type" TEXT,
|
||||
database_name TEXT,
|
||||
table_name TEXT,
|
||||
cid INTEGER,
|
||||
name TEXT,
|
||||
type TEXT,
|
||||
"notnull" INTEGER,
|
||||
"default_value" TEXT, -- renamed from dflt_value
|
||||
"is_pk" INTEGER, -- renamed from pk
|
||||
"hidden" INTEGER,
|
||||
default_value TEXT, -- renamed from dflt_value
|
||||
is_pk INTEGER, -- renamed from pk
|
||||
hidden INTEGER,
|
||||
PRIMARY KEY (database_name, table_name, name),
|
||||
FOREIGN KEY (database_name) REFERENCES databases(database_name),
|
||||
FOREIGN KEY (database_name, table_name) REFERENCES tables(database_name, table_name)
|
||||
)
|
||||
""",
|
||||
"""
|
||||
),
|
||||
block=True,
|
||||
)
|
||||
await db.execute_write(
|
||||
"""
|
||||
textwrap.dedent(
|
||||
"""
|
||||
CREATE TABLE indexes (
|
||||
"database_name" TEXT,
|
||||
"table_name" TEXT,
|
||||
"seq" INTEGER,
|
||||
"name" TEXT,
|
||||
database_name TEXT,
|
||||
table_name TEXT,
|
||||
seq INTEGER,
|
||||
name TEXT,
|
||||
"unique" INTEGER,
|
||||
"origin" TEXT,
|
||||
"partial" INTEGER,
|
||||
origin TEXT,
|
||||
partial INTEGER,
|
||||
PRIMARY KEY (database_name, table_name, name),
|
||||
FOREIGN KEY (database_name) REFERENCES databases(database_name),
|
||||
FOREIGN KEY (database_name, table_name) REFERENCES tables(database_name, table_name)
|
||||
)
|
||||
""",
|
||||
"""
|
||||
),
|
||||
block=True,
|
||||
)
|
||||
await db.execute_write(
|
||||
"""
|
||||
textwrap.dedent(
|
||||
"""
|
||||
CREATE TABLE foreign_keys (
|
||||
"database_name" TEXT,
|
||||
"table_name" TEXT,
|
||||
"id" INTEGER,
|
||||
"seq" INTEGER,
|
||||
database_name TEXT,
|
||||
table_name TEXT,
|
||||
id INTEGER,
|
||||
seq INTEGER,
|
||||
"table" TEXT,
|
||||
"from" TEXT,
|
||||
"to" TEXT,
|
||||
"on_update" TEXT,
|
||||
"on_delete" TEXT,
|
||||
"match" TEXT,
|
||||
on_update TEXT,
|
||||
on_delete TEXT,
|
||||
match TEXT,
|
||||
PRIMARY KEY (database_name, table_name, id, seq),
|
||||
FOREIGN KEY (database_name) REFERENCES databases(database_name),
|
||||
FOREIGN KEY (database_name, table_name) REFERENCES tables(database_name, table_name)
|
||||
)
|
||||
""",
|
||||
"""
|
||||
),
|
||||
block=True,
|
||||
)
|
||||
|
||||
|
|
@ -84,14 +97,14 @@ async def init_internal_db(db):
|
|||
async def populate_schema_tables(internal_db, db):
|
||||
database_name = db.name
|
||||
await internal_db.execute_write(
|
||||
"delete from tables where database_name = ?", [database_name], block=True
|
||||
"DELETE FROM tables WHERE database_name = ?", [database_name], block=True
|
||||
)
|
||||
tables = (await db.execute("select * from sqlite_master where type = 'table'")).rows
|
||||
tables = (await db.execute("select * from sqlite_master WHERE type = 'table'")).rows
|
||||
for table in tables:
|
||||
table_name = table["name"]
|
||||
await internal_db.execute_write(
|
||||
"""
|
||||
insert into tables (database_name, table_name, rootpage, sql)
|
||||
INSERT INTO tables (database_name, table_name, rootpage, sql)
|
||||
values (?, ?, ?, ?)
|
||||
""",
|
||||
[database_name, table_name, table["rootpage"], table["sql"]],
|
||||
|
|
@ -99,7 +112,7 @@ async def populate_schema_tables(internal_db, db):
|
|||
)
|
||||
# And the columns
|
||||
await internal_db.execute_write(
|
||||
"delete from columns where database_name = ? and table_name = ?",
|
||||
"DELETE FROM columns WHERE database_name = ? and table_name = ?",
|
||||
[database_name, table_name],
|
||||
block=True,
|
||||
)
|
||||
|
|
@ -111,7 +124,7 @@ async def populate_schema_tables(internal_db, db):
|
|||
}
|
||||
await internal_db.execute_write(
|
||||
"""
|
||||
insert into columns (
|
||||
INSERT INTO columns (
|
||||
database_name, table_name, cid, name, type, "notnull", default_value, is_pk, hidden
|
||||
) VALUES (
|
||||
:database_name, :table_name, :cid, :name, :type, :notnull, :default_value, :is_pk, :hidden
|
||||
|
|
@ -122,7 +135,7 @@ async def populate_schema_tables(internal_db, db):
|
|||
)
|
||||
# And the foreign_keys
|
||||
await internal_db.execute_write(
|
||||
"delete from foreign_keys where database_name = ? and table_name = ?",
|
||||
"DELETE FROM foreign_keys WHERE database_name = ? and table_name = ?",
|
||||
[database_name, table_name],
|
||||
block=True,
|
||||
)
|
||||
|
|
@ -136,7 +149,7 @@ async def populate_schema_tables(internal_db, db):
|
|||
}
|
||||
await internal_db.execute_write(
|
||||
"""
|
||||
insert into foreign_keys (
|
||||
INSERT INTO foreign_keys (
|
||||
database_name, table_name, "id", seq, "table", "from", "to", on_update, on_delete, match
|
||||
) VALUES (
|
||||
:database_name, :table_name, :id, :seq, :table, :from, :to, :on_update, :on_delete, :match
|
||||
|
|
@ -147,7 +160,7 @@ async def populate_schema_tables(internal_db, db):
|
|||
)
|
||||
# And the indexes
|
||||
await internal_db.execute_write(
|
||||
"delete from indexes where database_name = ? and table_name = ?",
|
||||
"DELETE FROM indexes WHERE database_name = ? and table_name = ?",
|
||||
[database_name, table_name],
|
||||
block=True,
|
||||
)
|
||||
|
|
@ -159,7 +172,7 @@ async def populate_schema_tables(internal_db, db):
|
|||
}
|
||||
await internal_db.execute_write(
|
||||
"""
|
||||
insert into indexes (
|
||||
INSERT INTO indexes (
|
||||
database_name, table_name, seq, name, "unique", origin, partial
|
||||
) VALUES (
|
||||
:database_name, :table_name, :seq, :name, :unique, :origin, :partial
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue