46 lines
2.1 KiB
SQL
46 lines
2.1 KiB
SQL
-- DROP TABLE IF EXISTS public.user CASCADE;
|
|
CREATE TABLE public.user (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
username TEXT,
|
|
photo TEXT,
|
|
issuer TEXT NOT NULL,
|
|
type TEXT NOT NULL,
|
|
identifier TEXT NOT NULL,
|
|
created_ts TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_ts TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
CONSTRAINT uniq__user__issuer_identifier UNIQUE (issuer, identifier)
|
|
);
|
|
CREATE INDEX idx__user__username ON public.user (username);
|
|
CREATE INDEX idx__user__identifier ON public.user (identifier);
|
|
CREATE INDEX idx__user__type ON public.user (type);
|
|
CREATE INDEX idx__user__issuer ON public.user (issuer);
|
|
CREATE INDEX idx__user__created_ts ON public.user (created_ts);
|
|
CREATE INDEX idx__user__updated_ts ON public.user (updated_ts);
|
|
|
|
-- DROP TABLE IF EXISTS public.app CASCADE;
|
|
CREATE TABLE public.app (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
type TEXT UNIQUE NOT NULL,
|
|
created_ts TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_ts TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
CREATE INDEX idx__app__type ON public.app (type);
|
|
CREATE INDEX idx__app__created_ts ON public.app (created_ts);
|
|
CREATE INDEX idx__app__updated_ts ON public.app (updated_ts);
|
|
|
|
-- DROP TABLE IF EXISTS public.auth CASCADE;
|
|
CREATE TABLE public.auth (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
user_id BIGINT NOT NULL REFERENCES public.user(id),
|
|
app_id BIGINT NOT NULL REFERENCES public.app(id),
|
|
api_key TEXT NOT NULL,
|
|
created_ts TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_ts TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
CONSTRAINT uniq__auth__user_id_app_id UNIQUE (user_id, app_id)
|
|
);
|
|
CREATE INDEX idx__auth__user_id ON public.auth (user_id);
|
|
CREATE INDEX idx__auth__app_id ON public.auth (app_id);
|
|
CREATE INDEX idx__auth__api_key ON public.auth (api_key);
|
|
CREATE INDEX idx__auth__created_ts ON public.auth (created_ts);
|
|
CREATE INDEX idx__auth__updated_ts ON public.auth (updated_ts);
|