|
@@ -33,105 +33,104 @@ class Database:
|
|
|
|
|
|
if initialization:
|
|
|
# create tables
|
|
|
- with self:
|
|
|
- with closing(self.con.cursor()) as cursor:
|
|
|
- cursor.execute('''
|
|
|
- CREATE TABLE IF NOT EXISTS models (
|
|
|
- id INTEGER PRIMARY KEY,
|
|
|
- name TEXT NOT NULL,
|
|
|
- description TEXT,
|
|
|
- root_folder TEXT NOT NULL UNIQUE,
|
|
|
- supports TEXT NOT NULL
|
|
|
- )
|
|
|
- ''')
|
|
|
- cursor.execute('''
|
|
|
- CREATE TABLE IF NOT EXISTS label_providers (
|
|
|
- id INTEGER PRIMARY KEY,
|
|
|
- name TEXT NOT NULL,
|
|
|
- description TEXT,
|
|
|
- root_folder TEXT NOT NULL UNIQUE
|
|
|
- )
|
|
|
- ''')
|
|
|
-
|
|
|
- cursor.execute('''
|
|
|
- CREATE TABLE IF NOT EXISTS projects (
|
|
|
- id INTEGER PRIMARY KEY,
|
|
|
- name TEXT NOT NULL,
|
|
|
- description TEXT,
|
|
|
- created INTEGER NOT NULL,
|
|
|
- model INTEGER,
|
|
|
- label_provider INTEGER,
|
|
|
- root_folder TEXT NOT NULL UNIQUE,
|
|
|
- external_data BOOL NOT NULL,
|
|
|
- data_folder TEXT NOT NULL,
|
|
|
- FOREIGN KEY (model) REFERENCES models(id)
|
|
|
- ON UPDATE CASCADE ON DELETE SET NULL,
|
|
|
- FOREIGN KEY (label_provider) REFERENCES label_providers(id)
|
|
|
- ON UPDATE CASCADE ON DELETE SET NULL
|
|
|
- )
|
|
|
- ''')
|
|
|
- cursor.execute('''
|
|
|
- CREATE TABLE IF NOT EXISTS labels (
|
|
|
- id INTEGER PRIMARY KEY,
|
|
|
- project INTEGER NOT NULL,
|
|
|
- parent INTEGER,
|
|
|
- created INTEGER NOT NULL,
|
|
|
- reference TEXT,
|
|
|
- name TEXT NOT NULL,
|
|
|
- FOREIGN KEY (project) REFERENCES projects(id)
|
|
|
- ON UPDATE CASCADE ON DELETE CASCADE,
|
|
|
- FOREIGN KEY (parent) REFERENCES labels(id)
|
|
|
- ON UPDATE CASCADE ON DELETE SET NULL,
|
|
|
- UNIQUE(project, reference)
|
|
|
- )
|
|
|
- ''')
|
|
|
- cursor.execute('''
|
|
|
- CREATE TABLE IF NOT EXISTS collections (
|
|
|
- id INTEGER PRIMARY KEY,
|
|
|
- project INTEGER NOT NULL,
|
|
|
- reference TEXT NOT NULL,
|
|
|
- name TEXT NOT NULL,
|
|
|
- description TEXT,
|
|
|
- position INTEGER NOT NULL,
|
|
|
- autoselect INTEGER NOT NULL,
|
|
|
- FOREIGN KEY (project) REFERENCES projects(id)
|
|
|
- ON UPDATE CASCADE ON DELETE CASCADE,
|
|
|
- UNIQUE(project, reference)
|
|
|
- )
|
|
|
- ''')
|
|
|
- cursor.execute('''
|
|
|
- CREATE TABLE IF NOT EXISTS files (
|
|
|
- id INTEGER PRIMARY KEY,
|
|
|
- uuid TEXT NOT NULL,
|
|
|
- project INTEGER NOT NULL,
|
|
|
- collection INTEGER,
|
|
|
- type TEXT NOT NULL,
|
|
|
- name TEXT NOT NULL,
|
|
|
- extension TEXT NOT NULL,
|
|
|
- size INTEGER NOT NULL,
|
|
|
- created INTEGER NOT NULL,
|
|
|
- path TEXT NOT NULL,
|
|
|
- frames INTEGER,
|
|
|
- fps FLOAT,
|
|
|
- FOREIGN KEY (project) REFERENCES projects(id)
|
|
|
- ON UPDATE CASCADE ON DELETE CASCADE,
|
|
|
- FOREIGN KEY (collection) REFERENCES collections(id)
|
|
|
- ON UPDATE CASCADE ON DELETE SET NULL,
|
|
|
- UNIQUE(project, path)
|
|
|
- )
|
|
|
- ''')
|
|
|
- cursor.execute('''
|
|
|
- CREATE TABLE IF NOT EXISTS results (
|
|
|
- id INTEGER PRIMARY KEY,
|
|
|
- file INTEGER NOT NULL,
|
|
|
- origin TEXT NOT NULL,
|
|
|
- type TEXT NOT NULL,
|
|
|
- label INTEGER,
|
|
|
- data TEXT,
|
|
|
- FOREIGN KEY (file) REFERENCES files(id)
|
|
|
- ON UPDATE CASCADE ON DELETE CASCADE
|
|
|
- )
|
|
|
- ''')
|
|
|
+ with self, closing(self.con.cursor()) as cursor:
|
|
|
+ cursor.execute('''
|
|
|
+ CREATE TABLE IF NOT EXISTS models (
|
|
|
+ id INTEGER PRIMARY KEY,
|
|
|
+ name TEXT NOT NULL,
|
|
|
+ description TEXT,
|
|
|
+ root_folder TEXT NOT NULL UNIQUE,
|
|
|
+ supports TEXT NOT NULL
|
|
|
+ )
|
|
|
+ ''')
|
|
|
+ cursor.execute('''
|
|
|
+ CREATE TABLE IF NOT EXISTS label_providers (
|
|
|
+ id INTEGER PRIMARY KEY,
|
|
|
+ name TEXT NOT NULL,
|
|
|
+ description TEXT,
|
|
|
+ root_folder TEXT NOT NULL UNIQUE
|
|
|
+ )
|
|
|
+ ''')
|
|
|
+
|
|
|
+ cursor.execute('''
|
|
|
+ CREATE TABLE IF NOT EXISTS projects (
|
|
|
+ id INTEGER PRIMARY KEY,
|
|
|
+ name TEXT NOT NULL,
|
|
|
+ description TEXT,
|
|
|
+ created INTEGER NOT NULL,
|
|
|
+ model INTEGER,
|
|
|
+ label_provider INTEGER,
|
|
|
+ root_folder TEXT NOT NULL UNIQUE,
|
|
|
+ external_data BOOL NOT NULL,
|
|
|
+ data_folder TEXT NOT NULL,
|
|
|
+ FOREIGN KEY (model) REFERENCES models(id)
|
|
|
+ ON UPDATE CASCADE ON DELETE SET NULL,
|
|
|
+ FOREIGN KEY (label_provider) REFERENCES label_providers(id)
|
|
|
+ ON UPDATE CASCADE ON DELETE SET NULL
|
|
|
+ )
|
|
|
+ ''')
|
|
|
+ cursor.execute('''
|
|
|
+ CREATE TABLE IF NOT EXISTS labels (
|
|
|
+ id INTEGER PRIMARY KEY,
|
|
|
+ project INTEGER NOT NULL,
|
|
|
+ parent INTEGER,
|
|
|
+ created INTEGER NOT NULL,
|
|
|
+ reference TEXT,
|
|
|
+ name TEXT NOT NULL,
|
|
|
+ FOREIGN KEY (project) REFERENCES projects(id)
|
|
|
+ ON UPDATE CASCADE ON DELETE CASCADE,
|
|
|
+ FOREIGN KEY (parent) REFERENCES labels(id)
|
|
|
+ ON UPDATE CASCADE ON DELETE SET NULL,
|
|
|
+ UNIQUE(project, reference)
|
|
|
+ )
|
|
|
+ ''')
|
|
|
+ cursor.execute('''
|
|
|
+ CREATE TABLE IF NOT EXISTS collections (
|
|
|
+ id INTEGER PRIMARY KEY,
|
|
|
+ project INTEGER NOT NULL,
|
|
|
+ reference TEXT NOT NULL,
|
|
|
+ name TEXT NOT NULL,
|
|
|
+ description TEXT,
|
|
|
+ position INTEGER NOT NULL,
|
|
|
+ autoselect INTEGER NOT NULL,
|
|
|
+ FOREIGN KEY (project) REFERENCES projects(id)
|
|
|
+ ON UPDATE CASCADE ON DELETE CASCADE,
|
|
|
+ UNIQUE(project, reference)
|
|
|
+ )
|
|
|
+ ''')
|
|
|
+ cursor.execute('''
|
|
|
+ CREATE TABLE IF NOT EXISTS files (
|
|
|
+ id INTEGER PRIMARY KEY,
|
|
|
+ uuid TEXT NOT NULL,
|
|
|
+ project INTEGER NOT NULL,
|
|
|
+ collection INTEGER,
|
|
|
+ type TEXT NOT NULL,
|
|
|
+ name TEXT NOT NULL,
|
|
|
+ extension TEXT NOT NULL,
|
|
|
+ size INTEGER NOT NULL,
|
|
|
+ created INTEGER NOT NULL,
|
|
|
+ path TEXT NOT NULL,
|
|
|
+ frames INTEGER,
|
|
|
+ fps FLOAT,
|
|
|
+ FOREIGN KEY (project) REFERENCES projects(id)
|
|
|
+ ON UPDATE CASCADE ON DELETE CASCADE,
|
|
|
+ FOREIGN KEY (collection) REFERENCES collections(id)
|
|
|
+ ON UPDATE CASCADE ON DELETE SET NULL,
|
|
|
+ UNIQUE(project, path)
|
|
|
+ )
|
|
|
+ ''')
|
|
|
+ cursor.execute('''
|
|
|
+ CREATE TABLE IF NOT EXISTS results (
|
|
|
+ id INTEGER PRIMARY KEY,
|
|
|
+ file INTEGER NOT NULL,
|
|
|
+ origin TEXT NOT NULL,
|
|
|
+ type TEXT NOT NULL,
|
|
|
+ label INTEGER,
|
|
|
+ data TEXT,
|
|
|
+ FOREIGN KEY (file) REFERENCES files(id)
|
|
|
+ ON UPDATE CASCADE ON DELETE CASCADE
|
|
|
+ )
|
|
|
+ ''')
|
|
|
|
|
|
if discovery:
|
|
|
# run discovery modules
|