Added SpeedCalc and MelodyBuilder. Evaluation Pending
This commit is contained in:
90
backend/builder/database.py
Normal file
90
backend/builder/database.py
Normal file
@@ -0,0 +1,90 @@
|
||||
import json
|
||||
import logging
|
||||
from mqtt.database import get_db
|
||||
|
||||
logger = logging.getLogger("builder.database")
|
||||
|
||||
|
||||
async def insert_built_melody(melody_id: str, name: str, pid: str, steps: str) -> None:
|
||||
db = await get_db()
|
||||
await db.execute(
|
||||
"""INSERT INTO built_melodies (id, name, pid, steps, assigned_melody_ids)
|
||||
VALUES (?, ?, ?, ?, ?)""",
|
||||
(melody_id, name, pid, steps, json.dumps([])),
|
||||
)
|
||||
await db.commit()
|
||||
|
||||
|
||||
async def update_built_melody(melody_id: str, name: str, pid: str, steps: str) -> None:
|
||||
db = await get_db()
|
||||
await db.execute(
|
||||
"""UPDATE built_melodies
|
||||
SET name = ?, pid = ?, steps = ?, updated_at = datetime('now')
|
||||
WHERE id = ?""",
|
||||
(name, pid, steps, melody_id),
|
||||
)
|
||||
await db.commit()
|
||||
|
||||
|
||||
async def update_binary_path(melody_id: str, binary_path: str) -> None:
|
||||
db = await get_db()
|
||||
await db.execute(
|
||||
"""UPDATE built_melodies
|
||||
SET binary_path = ?, updated_at = datetime('now')
|
||||
WHERE id = ?""",
|
||||
(binary_path, melody_id),
|
||||
)
|
||||
await db.commit()
|
||||
|
||||
|
||||
async def update_progmem_code(melody_id: str, progmem_code: str) -> None:
|
||||
db = await get_db()
|
||||
await db.execute(
|
||||
"""UPDATE built_melodies
|
||||
SET progmem_code = ?, updated_at = datetime('now')
|
||||
WHERE id = ?""",
|
||||
(progmem_code, melody_id),
|
||||
)
|
||||
await db.commit()
|
||||
|
||||
|
||||
async def update_assigned_melody_ids(melody_id: str, assigned_ids: list) -> None:
|
||||
db = await get_db()
|
||||
await db.execute(
|
||||
"""UPDATE built_melodies
|
||||
SET assigned_melody_ids = ?, updated_at = datetime('now')
|
||||
WHERE id = ?""",
|
||||
(json.dumps(assigned_ids), melody_id),
|
||||
)
|
||||
await db.commit()
|
||||
|
||||
|
||||
async def get_built_melody(melody_id: str) -> dict | None:
|
||||
db = await get_db()
|
||||
rows = await db.execute_fetchall(
|
||||
"SELECT * FROM built_melodies WHERE id = ?", (melody_id,)
|
||||
)
|
||||
if not rows:
|
||||
return None
|
||||
row = dict(rows[0])
|
||||
row["assigned_melody_ids"] = json.loads(row["assigned_melody_ids"] or "[]")
|
||||
return row
|
||||
|
||||
|
||||
async def list_built_melodies() -> list[dict]:
|
||||
db = await get_db()
|
||||
rows = await db.execute_fetchall(
|
||||
"SELECT * FROM built_melodies ORDER BY updated_at DESC"
|
||||
)
|
||||
results = []
|
||||
for row in rows:
|
||||
r = dict(row)
|
||||
r["assigned_melody_ids"] = json.loads(r["assigned_melody_ids"] or "[]")
|
||||
results.append(r)
|
||||
return results
|
||||
|
||||
|
||||
async def delete_built_melody(melody_id: str) -> None:
|
||||
db = await get_db()
|
||||
await db.execute("DELETE FROM built_melodies WHERE id = ?", (melody_id,))
|
||||
await db.commit()
|
||||
Reference in New Issue
Block a user