22 lines
852 B
MySQL
22 lines
852 B
MySQL
|
|
-- API Keys table for programmatic access authentication
|
||
|
|
CREATE TABLE IF NOT EXISTS apikey_read_models (
|
||
|
|
aggregate_id VARCHAR(255) PRIMARY KEY,
|
||
|
|
create_time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
|
|
updated_time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
|
|
last_aggregate_sequence_number INT NOT NULL DEFAULT 1,
|
||
|
|
|
||
|
|
name VARCHAR(255) NOT NULL,
|
||
|
|
key_hash VARCHAR(64) NOT NULL,
|
||
|
|
company_id VARCHAR(255) NOT NULL,
|
||
|
|
created_by VARCHAR(255) NOT NULL,
|
||
|
|
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
||
|
|
revoked_time TIMESTAMPTZ,
|
||
|
|
revoked_by VARCHAR(255)
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Index for looking up API keys by company
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_apikey_company ON apikey_read_models(company_id);
|
||
|
|
|
||
|
|
-- Partial index for efficient lookups of active API keys
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_apikey_active ON apikey_read_models(aggregate_id) WHERE is_active = true;
|