summaryrefslogtreecommitdiff
path: root/makima/migrations/20250110000004_create_api_key_events_table.sql
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-06 04:08:11 +0000
committersoryu <soryu@soryu.co>2026-01-11 03:01:13 +0000
commit8b17a175c3e7e27b789812eba4e3cd760beadb10 (patch)
tree7864dcaa2fa9db47fdfd4e8bfdb0b1dde832aa33 /makima/migrations/20250110000004_create_api_key_events_table.sql
parentf79c416c58557d2f946aa5332989afdfa8c021cd (diff)
downloadsoryu-8b17a175c3e7e27b789812eba4e3cd760beadb10.tar.gz
soryu-8b17a175c3e7e27b789812eba4e3cd760beadb10.zip
Initial Control system
Diffstat (limited to 'makima/migrations/20250110000004_create_api_key_events_table.sql')
-rw-r--r--makima/migrations/20250110000004_create_api_key_events_table.sql20
1 files changed, 20 insertions, 0 deletions
diff --git a/makima/migrations/20250110000004_create_api_key_events_table.sql b/makima/migrations/20250110000004_create_api_key_events_table.sql
new file mode 100644
index 0000000..cb07bb3
--- /dev/null
+++ b/makima/migrations/20250110000004_create_api_key_events_table.sql
@@ -0,0 +1,20 @@
+-- Audit log for API key operations
+CREATE TABLE IF NOT EXISTS api_key_events (
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
+ api_key_id UUID NOT NULL REFERENCES api_keys(id) ON DELETE CASCADE,
+ event_type VARCHAR(32) NOT NULL,
+ -- Request metadata
+ ip_address INET,
+ user_agent TEXT,
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
+
+ CONSTRAINT valid_event_type CHECK (
+ event_type IN ('created', 'used', 'revoked', 'refreshed')
+ )
+);
+
+CREATE INDEX idx_api_key_events_api_key_id ON api_key_events(api_key_id);
+CREATE INDEX idx_api_key_events_created_at ON api_key_events(created_at DESC);
+CREATE INDEX idx_api_key_events_event_type ON api_key_events(event_type);
+
+COMMENT ON TABLE api_key_events IS 'Audit log for API key lifecycle events';