14 lines
589 B
SQL
14 lines
589 B
SQL
CREATE TABLE api_keys (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
user_id uuid NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
name text NOT NULL CHECK (length(btrim(name)) BETWEEN 1 AND 128),
|
|
prefix text NOT NULL UNIQUE CHECK (prefix ~ '^oc_[a-z0-9]{8}$'),
|
|
key_hash bytea NOT NULL UNIQUE,
|
|
expires_at timestamptz,
|
|
enabled boolean NOT NULL DEFAULT true,
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
last_used_at timestamptz
|
|
);
|
|
CREATE INDEX api_keys_user_idx ON api_keys(user_id,created_at DESC);
|
|
CREATE INDEX api_keys_active_idx ON api_keys(prefix) WHERE enabled;
|