Files
folkugat-web/folkugat_web/dal/sql/temes/ddl.py
2025-04-04 15:27:23 +02:00

88 lines
2.2 KiB
Python

from folkugat_web.dal.sql import Connection, get_connection
def create_db(con: Connection | None = None):
with get_connection(con) as con:
create_temes_table(con)
create_links_table(con)
create_lyrics_table(con)
create_properties_table(con)
create_scores_table(con)
def create_temes_table(con: Connection):
query = """
CREATE TABLE IF NOT EXISTS temes (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
alternatives TEXT,
creation_date TEXT NOT NULL,
modification_date TEXT NOT NULL,
hidden INTEGER NOT NULL
)
"""
cur = con.cursor()
_ = cur.execute(query)
def create_links_table(con: Connection):
query = """
CREATE TABLE IF NOT EXISTS tema_links (
id INTEGER PRIMARY KEY,
tema_id INTEGER,
content_type TEXT NOT NULL,
link_type TEXT,
title TEXT NOT NULL,
url TEXT NOT NULL,
FOREIGN KEY(tema_id) REFERENCES temes(id) ON DELETE CASCADE
)
"""
cur = con.cursor()
_ = cur.execute(query)
def create_lyrics_table(con: Connection):
query = """
CREATE TABLE IF NOT EXISTS tema_lyrics (
id INTEGER PRIMARY KEY,
tema_id INTEGER,
title TEXT NOT NULL,
content TEXT NOT NULL,
FOREIGN KEY(tema_id) REFERENCES temes(id) ON DELETE CASCADE
)
"""
cur = con.cursor()
_ = cur.execute(query)
def create_properties_table(con: Connection):
query = """
CREATE TABLE IF NOT EXISTS tema_properties (
id INTEGER PRIMARY KEY,
tema_id INTEGER,
field TEXT NOT NULL,
value TEXT NOT NULL,
FOREIGN KEY(tema_id) REFERENCES temes(id) ON DELETE CASCADE
)
"""
cur = con.cursor()
_ = cur.execute(query)
def create_scores_table(con: Connection):
query = """
CREATE TABLE IF NOT EXISTS tema_scores (
id INTEGER PRIMARY KEY,
tema_id INTEGER,
title TEXT,
source TEXT NOT NULL,
errors TEXT NOT NULL,
img_url TEXT,
pdf_url TEXT,
hidden BOOLEAN,
FOREIGN KEY(tema_id) REFERENCES temes(id) ON DELETE CASCADE
)
"""
cur = con.cursor()
_ = cur.execute(query)