-- DROP TABLE IF EXISTS public.usage_url CASCADE; CREATE TABLE public.usage_url ( id BIGSERIAL PRIMARY KEY, url TEXT NOT NULL, module TEXT NOT NULL, created_ts TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_ts TIMESTAMPTZ NOT NULL DEFAULT NOW(), CONSTRAINT uniq__usage_url__url_module UNIQUE (url, module) ); CREATE INDEX idx__public__usage_url__url ON public.usage_url (url); CREATE INDEX idx__public__usage_url__module ON public.usage_url (module); CREATE INDEX idx__public__usage_url__created_ts ON public.usage_url (created_ts); CREATE INDEX idx__public__usage_url__updated_ts ON public.usage_url (updated_ts); -- DROP TABLE IF EXISTS public.usage CASCADE; CREATE TABLE public.usage ( id BIGSERIAL PRIMARY KEY, user_id BIGINT NOT NULL REFERENCES public.user(id), usage_url_id BIGINT NOT NULL REFERENCES public.usage_url(id), success BOOLEAN NOT NULL DEFAULT TRUE, created_ts TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_ts TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE INDEX idx__public__usage__user_id ON public.usage (user_id); CREATE INDEX idx__public__usage__usage_url_id ON public.usage (usage_url_id); CREATE INDEX idx__public__usage__success ON public.usage (success); CREATE INDEX idx__public__usage__created_ts ON public.usage (created_ts); CREATE INDEX idx__public__usage__updated_ts ON public.usage (updated_ts);