40 lines
2.2 KiB
Python
40 lines
2.2 KiB
Python
import sqlite3 as sq
|
|
from pathlib import Path
|
|
|
|
|
|
class ModelSpaceDatabase:
|
|
def __init__(self, path):
|
|
self.path = path
|
|
self.con = sq.connect(Path(self.path) / "modelspace.db")
|
|
self.con.autocommit = True
|
|
self.cur = self.con.cursor()
|
|
self.create(self.cur)
|
|
|
|
|
|
@staticmethod
|
|
def create(cur):
|
|
cur.execute('CREATE TABLE IF NOT EXISTS files (uuid TEXT NOT NULL, file TEXT NOT NULL, PRIMARY KEY(uuid, file))')
|
|
cur.execute('CREATE TABLE IF NOT EXISTS manual (uuid TEXT NOT NULL PRIMARY KEY)')
|
|
cur.execute('CREATE TABLE IF NOT EXISTS deps (uuid TEXT NOT NULL PRIMARY KEY)')
|
|
|
|
def create_file(self, uuid, file): self.cur.execute('INSERT OR IGNORE INTO files (uuid, file) VALUES (?, ?)', (uuid, file))
|
|
def delete_file(self, uuid, file): self.cur.execute('DELETE FROM files WHERE uuid = ? AND file = ?', (uuid, file))
|
|
|
|
def get_all_files(self): self.cur.execute('SELECT * FROM files'); return self.cur.fetchall()
|
|
def get_files_by_uuid(self, uuid): self.cur.execute('SELECT file FROM files WHERE uuid = ?', (uuid,)); return self.cur.fetchall()
|
|
def get_uuid_by_file(self, file): self.cur.execute('SELECT uuid FROM files WHERE file = ?', (file,)); return self.cur.fetchall()
|
|
|
|
def create_manual(self, uuid): self.cur.execute('INSERT OR IGNORE INTO manual (uuid) VALUES (?)', (uuid,))
|
|
def delete_manual(self, uuid): self.cur.execute('DELETE FROM manual WHERE uuid = ?', (uuid,))
|
|
def get_all_manuals(self): self.cur.execute('SELECT * FROM manual'); return self.cur.fetchall()
|
|
|
|
def create_deps(self, uuid): self.cur.execute('INSERT OR IGNORE INTO deps (uuid) VALUES (?)', (uuid,))
|
|
def delete_deps(self, uuid): self.cur.execute('DELETE FROM deps WHERE uuid = ?', (uuid,))
|
|
def get_all_deps(self): self.cur.execute('SELECT * FROM deps'); return self.cur.fetchall()
|
|
|
|
def get_files_count(self): self.cur.execute('SELECT COUNT(*) FROM files'); return self.cur.fetchone()[0]
|
|
def get_manuals_count(self): self.cur.execute('SELECT COUNT(*) FROM manual'); return self.cur.fetchone()[0]
|
|
def get_deps_count(self): self.cur.execute('SELECT COUNT(*) FROM deps'); return self.cur.fetchone()[0]
|
|
|
|
def clear_table(self, table_name): self.cur.execute(f'DELETE FROM {table_name}')
|