yeet
This commit is contained in:
66
migrations/001_initial.sql
Normal file
66
migrations/001_initial.sql
Normal file
@@ -0,0 +1,66 @@
|
||||
-- Users table
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id TEXT PRIMARY KEY,
|
||||
username TEXT UNIQUE NOT NULL,
|
||||
email TEXT,
|
||||
password_hash TEXT,
|
||||
role TEXT NOT NULL DEFAULT 'viewer',
|
||||
provider TEXT NOT NULL DEFAULT 'local',
|
||||
provider_id TEXT,
|
||||
created_at DATETIME NOT NULL,
|
||||
last_login DATETIME,
|
||||
is_active BOOLEAN NOT NULL DEFAULT true
|
||||
);
|
||||
|
||||
-- Sessions table
|
||||
CREATE TABLE IF NOT EXISTS sessions (
|
||||
id TEXT PRIMARY KEY,
|
||||
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
token TEXT UNIQUE NOT NULL,
|
||||
created_at DATETIME NOT NULL,
|
||||
expires_at DATETIME NOT NULL,
|
||||
is_active BOOLEAN NOT NULL DEFAULT true
|
||||
);
|
||||
|
||||
-- Access rules table for path-based permissions
|
||||
CREATE TABLE IF NOT EXISTS access_rules (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
path_pattern TEXT NOT NULL,
|
||||
required_role TEXT NOT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Create indexes (SQLite ignores IF NOT EXISTS for indexes, so we'll use a different approach)
|
||||
CREATE INDEX IF NOT EXISTS idx_users_username ON users(username);
|
||||
CREATE INDEX IF NOT EXISTS idx_users_provider ON users(provider, provider_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_sessions_token ON sessions(token);
|
||||
CREATE INDEX IF NOT EXISTS idx_sessions_user_id ON sessions(user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_sessions_expires_at ON sessions(expires_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_access_rules_path ON access_rules(path_pattern);
|
||||
|
||||
-- Insert default admin user (password: admin123) - only if it doesn't exist
|
||||
INSERT OR IGNORE INTO users (
|
||||
id,
|
||||
username,
|
||||
email,
|
||||
password_hash,
|
||||
role,
|
||||
provider,
|
||||
created_at,
|
||||
is_active
|
||||
) VALUES (
|
||||
'550e8400-e29b-41d4-a716-446655440000',
|
||||
'admin',
|
||||
'admin@obswiki.local',
|
||||
'$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/Xh4XoKjKS6J8G7/gS',
|
||||
'admin',
|
||||
'local',
|
||||
'2024-01-01 00:00:00',
|
||||
true
|
||||
);
|
||||
|
||||
-- Insert some default access rules - only if they don't exist
|
||||
INSERT OR IGNORE INTO access_rules (id, path_pattern, required_role) VALUES
|
||||
(1, 'admin/*', 'admin'),
|
||||
(2, 'private/*', 'editor'),
|
||||
(3, '*', 'viewer');
|
||||
Reference in New Issue
Block a user