PRAGMA FOREIGN_KEYS = ON; -- Represents a directory and its sub-directories CREATE TABLE Directory ( id INTEGER PRIMARY KEY AUTOINCREMENT, path TEXT UNIQUE, name TEXT, enabled BOOLEAN ); -- Represents a queued task for crawling a Directory or generating thumnails CREATE TABLE Task ( id INTEGER PRIMARY KEY AUTOINCREMENT, directory_id INTEGER, type INTEGER, completed BOOLEAN DEFAULT 0, completed_time DATETIME, FOREIGN KEY (directory_id) REFERENCES Directory(id) ); -- You can set an option on a directory to change the crawler's behavior CREATE TABLE Option ( id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT, value TEXT, directory_id INTEGER, FOREIGN KEY (directory_id) REFERENCES Directory(id) ); -- User accounts CREATE TABLE User ( username TEXT PRIMARY KEY, password TEXT, is_admin BOOLEAN ); CREATE TABLE User_canRead_Directory ( username TEXT, directory_id INTEGER, PRIMARY KEY (username, directory_id), FOREIGN KEY (username) REFERENCES User(username), FOREIGN KEY (directory_id) REFERENCES Directory(id) )