Some checks failed
Build & Publish Docker Image / build-and-push (push) Failing after 33s
Implement SQLite support using the pure Go `modernc.org/sqlite` driver and update the migration system to handle driver-specific schemas. Users can now choose between MySQL and SQLite by setting the `DB_DRIVER` environment variable.
66 lines
2.4 KiB
SQL
66 lines
2.4 KiB
SQL
CREATE TABLE IF NOT EXISTS bug_reports (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL,
|
|
email TEXT NOT NULL,
|
|
description TEXT NOT NULL,
|
|
hwid TEXT NOT NULL DEFAULT '',
|
|
hostname TEXT NOT NULL DEFAULT '',
|
|
os_user TEXT NOT NULL DEFAULT '',
|
|
submitter_ip TEXT NOT NULL DEFAULT '',
|
|
system_info TEXT NULL,
|
|
status TEXT NOT NULL DEFAULT 'new' CHECK(status IN ('new','in_review','resolved','closed')),
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_status ON bug_reports(status);
|
|
CREATE INDEX IF NOT EXISTS idx_hwid ON bug_reports(hwid);
|
|
CREATE INDEX IF NOT EXISTS idx_hostname ON bug_reports(hostname);
|
|
CREATE INDEX IF NOT EXISTS idx_os_user ON bug_reports(os_user);
|
|
CREATE INDEX IF NOT EXISTS idx_created_at ON bug_reports(created_at);
|
|
|
|
CREATE TRIGGER IF NOT EXISTS trg_bug_reports_updated_at
|
|
AFTER UPDATE ON bug_reports
|
|
FOR EACH ROW
|
|
WHEN NEW.updated_at = OLD.updated_at
|
|
BEGIN
|
|
UPDATE bug_reports SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id;
|
|
END;
|
|
|
|
CREATE TABLE IF NOT EXISTS bug_report_files (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
report_id INTEGER NOT NULL,
|
|
file_role TEXT NOT NULL CHECK(file_role IN ('screenshot','mail_file','localstorage','config','system_info')),
|
|
filename TEXT NOT NULL,
|
|
mime_type TEXT NOT NULL DEFAULT 'application/octet-stream',
|
|
file_size INTEGER NOT NULL DEFAULT 0,
|
|
data BLOB NOT NULL,
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (report_id) REFERENCES bug_reports(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_report_id ON bug_report_files(report_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS rate_limit_hwid (
|
|
hwid TEXT PRIMARY KEY,
|
|
window_start DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
count INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS user (
|
|
id TEXT PRIMARY KEY,
|
|
username TEXT NOT NULL UNIQUE,
|
|
password_hash TEXT NOT NULL,
|
|
role TEXT NOT NULL DEFAULT 'user' CHECK(role IN ('admin','user')),
|
|
enabled INTEGER NOT NULL DEFAULT 1,
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
displayname TEXT NOT NULL DEFAULT ''
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS session (
|
|
id TEXT PRIMARY KEY,
|
|
user_id TEXT NOT NULL,
|
|
expires_at DATETIME NOT NULL,
|
|
FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE
|
|
);
|