diff options
| author | soryu <soryu@soryu.co> | 2026-01-06 04:08:11 +0000 |
|---|---|---|
| committer | soryu <soryu@soryu.co> | 2026-01-11 03:01:13 +0000 |
| commit | 8b17a175c3e7e27b789812eba4e3cd760beadb10 (patch) | |
| tree | 7864dcaa2fa9db47fdfd4e8bfdb0b1dde832aa33 /makima/migrations/20250110000004_create_api_key_events_table.sql | |
| parent | f79c416c58557d2f946aa5332989afdfa8c021cd (diff) | |
| download | soryu-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.sql | 20 |
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'; |
