3588AdminBackend/internal/storage/migrate.go

89 lines
2.4 KiB
Go

package storage
import "database/sql"
const schema001 = `
CREATE TABLE IF NOT EXISTS templates (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
description TEXT NOT NULL DEFAULT '',
body_json TEXT NOT NULL,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS profiles (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
template_name TEXT NOT NULL DEFAULT '',
business_name TEXT NOT NULL DEFAULT '',
description TEXT NOT NULL DEFAULT '',
body_json TEXT NOT NULL,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS overlays (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
description TEXT NOT NULL DEFAULT '',
body_json TEXT NOT NULL,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS devices (
device_id TEXT PRIMARY KEY,
hostname TEXT NOT NULL DEFAULT '',
ip TEXT NOT NULL DEFAULT '',
agent_port INTEGER NOT NULL DEFAULT 0,
media_port INTEGER NOT NULL DEFAULT 0,
alias TEXT NOT NULL DEFAULT '',
device_name TEXT NOT NULL DEFAULT '',
version TEXT NOT NULL DEFAULT '',
git_sha TEXT NOT NULL DEFAULT '',
build_id TEXT NOT NULL DEFAULT '',
last_seen_ms INTEGER NOT NULL DEFAULT 0,
online INTEGER NOT NULL DEFAULT 0,
graphs_json TEXT NOT NULL DEFAULT '{}',
updated_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS device_config_state (
device_id TEXT PRIMARY KEY,
template_name TEXT NOT NULL DEFAULT '',
profile_name TEXT NOT NULL DEFAULT '',
overlays_json TEXT NOT NULL DEFAULT '[]',
config_id TEXT NOT NULL DEFAULT '',
config_version TEXT NOT NULL DEFAULT '',
last_applied_task_id TEXT NOT NULL DEFAULT '',
updated_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS tasks (
task_id TEXT PRIMARY KEY,
type TEXT NOT NULL,
payload_json TEXT NOT NULL,
status TEXT NOT NULL,
created_at TEXT NOT NULL,
finished_at TEXT NOT NULL DEFAULT ''
);
CREATE TABLE IF NOT EXISTS task_devices (
task_id TEXT NOT NULL,
device_id TEXT NOT NULL,
status TEXT NOT NULL,
progress REAL NOT NULL DEFAULT 0,
error_text TEXT NOT NULL DEFAULT '',
PRIMARY KEY (task_id, device_id)
);
CREATE TABLE IF NOT EXISTS audit_logs (
id INTEGER PRIMARY KEY,
actor TEXT NOT NULL DEFAULT 'system',
action TEXT NOT NULL,
target_type TEXT NOT NULL,
target_id TEXT NOT NULL,
details_json TEXT NOT NULL DEFAULT '{}',
created_at TEXT NOT NULL
);
`
func migrate(db *sql.DB) error {
_, err := db.Exec(schema001)
return err
}