49 lines
1.5 KiB
SQL
49 lines
1.5 KiB
SQL
CREATE TABLE users (
|
|
id SERIAL PRIMARY KEY,
|
|
username VARCHAR(64) NOT NULL UNIQUE,
|
|
password_hash VARCHAR(255) NOT NULL,
|
|
expires_at TIMESTAMPTZ NOT NULL,
|
|
active BOOLEAN NOT NULL DEFAULT TRUE,
|
|
is_admin BOOLEAN NOT NULL DEFAULT FALSE,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE services (
|
|
id SERIAL PRIMARY KEY,
|
|
name VARCHAR(128) NOT NULL,
|
|
slug VARCHAR(64) NOT NULL UNIQUE,
|
|
type VARCHAR(8) NOT NULL CHECK (type IN ('WEB', 'VNC', 'RDP')),
|
|
target TEXT NOT NULL,
|
|
comment TEXT NOT NULL DEFAULT '',
|
|
icon_path TEXT NOT NULL DEFAULT '',
|
|
active BOOLEAN NOT NULL DEFAULT TRUE,
|
|
warm_pool_size INT NOT NULL DEFAULT 0,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE user_service_access (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
service_id INT NOT NULL REFERENCES services(id) ON DELETE CASCADE,
|
|
granted_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
UNIQUE (user_id, service_id)
|
|
);
|
|
|
|
CREATE TABLE sessions (
|
|
id UUID PRIMARY KEY,
|
|
user_id INT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
service_id INT NOT NULL REFERENCES services(id) ON DELETE CASCADE,
|
|
status VARCHAR(16) NOT NULL DEFAULT 'ACTIVE',
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
last_access_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
container_id VARCHAR(128)
|
|
);
|
|
|
|
CREATE TABLE audit_logs (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
user_id INT,
|
|
action VARCHAR(128) NOT NULL,
|
|
details TEXT NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|