summaryrefslogtreecommitdiff
path: root/migrations/001_initial_schema.sql
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-06-11 20:20:04 -0600
committermo khan <mo@mokhan.ca>2025-06-11 20:20:04 -0600
commitc28b7088b6fad045060a52b6e1a2249e876090e3 (patch)
treea8fc26fd5365d4988d9206b32d94f51047cf0bcc /migrations/001_initial_schema.sql
parent19ca22e604f9bcdf6b25f973f81b2486b0dcb789 (diff)
refactor: extract domain model
Diffstat (limited to 'migrations/001_initial_schema.sql')
-rw-r--r--migrations/001_initial_schema.sql107
1 files changed, 0 insertions, 107 deletions
diff --git a/migrations/001_initial_schema.sql b/migrations/001_initial_schema.sql
deleted file mode 100644
index 8796157..0000000
--- a/migrations/001_initial_schema.sql
+++ /dev/null
@@ -1,107 +0,0 @@
--- Migration 001: Initial OAuth2 STS Schema
--- Created: 2024-01-01
--- Description: Create core OAuth2 tables with proper foreign keys and indexes
-
--- OAuth Clients table
-CREATE TABLE IF NOT EXISTS oauth_clients (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- client_id TEXT NOT NULL UNIQUE,
- client_secret_hash TEXT NOT NULL,
- client_name TEXT NOT NULL,
- redirect_uris TEXT NOT NULL, -- JSON array
- scopes TEXT NOT NULL, -- space-separated
- grant_types TEXT NOT NULL, -- space-separated
- response_types TEXT NOT NULL, -- space-separated
- created_at TEXT NOT NULL,
- updated_at TEXT NOT NULL,
- is_active BOOLEAN NOT NULL DEFAULT 1
-);
-
--- Authorization Codes table
-CREATE TABLE IF NOT EXISTS auth_codes (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- code TEXT NOT NULL UNIQUE,
- client_id TEXT NOT NULL,
- user_id TEXT NOT NULL,
- redirect_uri TEXT NOT NULL,
- scope TEXT,
- expires_at TEXT NOT NULL,
- created_at TEXT NOT NULL,
- is_used BOOLEAN NOT NULL DEFAULT 0,
- code_challenge TEXT,
- code_challenge_method TEXT,
- FOREIGN KEY (client_id) REFERENCES oauth_clients (client_id)
-);
-
--- Access Tokens table
-CREATE TABLE IF NOT EXISTS access_tokens (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- token_id TEXT NOT NULL UNIQUE,
- client_id TEXT NOT NULL,
- user_id TEXT NOT NULL,
- scope TEXT,
- expires_at TEXT NOT NULL,
- created_at TEXT NOT NULL,
- is_revoked BOOLEAN NOT NULL DEFAULT 0,
- token_hash TEXT NOT NULL,
- FOREIGN KEY (client_id) REFERENCES oauth_clients (client_id)
-);
-
--- Refresh Tokens table
-CREATE TABLE IF NOT EXISTS refresh_tokens (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- token_id TEXT NOT NULL UNIQUE,
- access_token_id INTEGER NOT NULL,
- client_id TEXT NOT NULL,
- user_id TEXT NOT NULL,
- scope TEXT,
- expires_at TEXT NOT NULL,
- created_at TEXT NOT NULL,
- is_revoked BOOLEAN NOT NULL DEFAULT 0,
- token_hash TEXT NOT NULL,
- FOREIGN KEY (client_id) REFERENCES oauth_clients (client_id),
- FOREIGN KEY (access_token_id) REFERENCES access_tokens (id)
-);
-
--- RSA Keys table
-CREATE TABLE IF NOT EXISTS rsa_keys (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- kid TEXT NOT NULL UNIQUE,
- private_key_pem TEXT NOT NULL,
- public_key_pem TEXT NOT NULL,
- created_at TEXT NOT NULL,
- is_current BOOLEAN NOT NULL DEFAULT 0
-);
-
--- Audit Log table
-CREATE TABLE IF NOT EXISTS audit_logs (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- event_type TEXT NOT NULL,
- client_id TEXT,
- user_id TEXT,
- ip_address TEXT,
- user_agent TEXT,
- details TEXT, -- JSON
- created_at TEXT NOT NULL,
- success BOOLEAN NOT NULL
-);
-
--- Rate Limiting table
-CREATE TABLE IF NOT EXISTS rate_limits (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- identifier TEXT NOT NULL, -- client_id or IP
- endpoint TEXT NOT NULL,
- count INTEGER NOT NULL DEFAULT 1,
- window_start TEXT NOT NULL,
- created_at TEXT NOT NULL,
- UNIQUE (identifier, endpoint, window_start)
-);
-
--- Performance indexes
-CREATE INDEX IF NOT EXISTS idx_auth_codes_client_id ON auth_codes (client_id);
-CREATE INDEX IF NOT EXISTS idx_auth_codes_expires_at ON auth_codes (expires_at);
-CREATE INDEX IF NOT EXISTS idx_access_tokens_client_id ON access_tokens (client_id);
-CREATE INDEX IF NOT EXISTS idx_access_tokens_expires_at ON access_tokens (expires_at);
-CREATE INDEX IF NOT EXISTS idx_refresh_tokens_client_id ON refresh_tokens (client_id);
-CREATE INDEX IF NOT EXISTS idx_audit_logs_created_at ON audit_logs (created_at);
-CREATE INDEX IF NOT EXISTS idx_rate_limits_identifier ON rate_limits (identifier, endpoint); \ No newline at end of file