Files
vaiola/modelspace/ModelSpaceDatabase.py

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}')