Files
publisher-dashboard/db/schema.sql
igm 848d9e9af1 Add db-dump and db-migrate scripts to strip \restrict lines
PostgreSQL 17.6+ adds random \restrict/\unrestrict tokens to pg_dump
output (CVE-2025-8714 security fix), causing schema.sql to appear
changed on every dump even when the schema hasn't changed.

These wrapper scripts run dbmate and strip the \restrict lines from
the output to keep schema.sql stable.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 12:33:20 +08:00

1095 lines
25 KiB
SQL

-- Dumped from database version 17.7
-- Dumped by pg_dump version 17.7
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET transaction_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
--
-- Name: org_role; Type: TYPE; Schema: public; Owner: -
--
CREATE TYPE public.org_role AS ENUM (
'owner',
'admin',
'member'
);
--
-- Name: passkey_device_type; Type: TYPE; Schema: public; Owner: -
--
CREATE TYPE public.passkey_device_type AS ENUM (
'singleDevice',
'multiDevice'
);
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: api_tokens; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.api_tokens (
id bigint NOT NULL,
user_id integer NOT NULL,
name text NOT NULL,
token_hash text NOT NULL,
last_used_at timestamp with time zone,
expires_at timestamp with time zone NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
--
-- Name: api_tokens_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.api_tokens_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: api_tokens_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.api_tokens_id_seq OWNED BY public.api_tokens.id;
--
-- Name: email_verifications; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.email_verifications (
id bigint NOT NULL,
user_id integer NOT NULL,
token text NOT NULL,
expires_at timestamp with time zone NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
--
-- Name: email_verifications_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.email_verifications_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: email_verifications_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.email_verifications_id_seq OWNED BY public.email_verifications.id;
--
-- Name: login_requests; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.login_requests (
id bigint NOT NULL,
user_id integer NOT NULL,
email text NOT NULL,
token text NOT NULL,
device_fingerprint text,
ip_address text,
city text,
region text,
country text,
user_agent text,
completed_at timestamp with time zone,
expires_at timestamp with time zone NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
--
-- Name: login_requests_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.login_requests_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: login_requests_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.login_requests_id_seq OWNED BY public.login_requests.id;
--
-- Name: org_invites; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.org_invites (
id integer NOT NULL,
org_id integer NOT NULL,
email text NOT NULL,
role public.org_role DEFAULT 'member'::public.org_role NOT NULL,
invited_by integer NOT NULL,
token text NOT NULL,
expires_at timestamp with time zone NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
--
-- Name: org_invites_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.org_invites_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: org_invites_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.org_invites_id_seq OWNED BY public.org_invites.id;
--
-- Name: org_members; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.org_members (
id integer NOT NULL,
org_id integer NOT NULL,
user_id integer NOT NULL,
role public.org_role DEFAULT 'member'::public.org_role NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
--
-- Name: org_members_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.org_members_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: org_members_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.org_members_id_seq OWNED BY public.org_members.id;
--
-- Name: org_sites; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.org_sites (
id integer NOT NULL,
org_id integer NOT NULL,
domain text NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
--
-- Name: org_sites_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.org_sites_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: org_sites_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.org_sites_id_seq OWNED BY public.org_sites.id;
--
-- Name: orgs; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.orgs (
id integer NOT NULL,
slug text NOT NULL,
display_name text NOT NULL,
logo_url text,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL
);
--
-- Name: orgs_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.orgs_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: orgs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.orgs_id_seq OWNED BY public.orgs.id;
--
-- Name: passkeys; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.passkeys (
id bigint NOT NULL,
user_id integer NOT NULL,
credential_id bytea NOT NULL,
public_key bytea NOT NULL,
webauthn_user_id text NOT NULL,
counter bigint DEFAULT 0 NOT NULL,
device_type public.passkey_device_type NOT NULL,
backup_eligible boolean NOT NULL,
backup_status boolean NOT NULL,
transports jsonb,
rpid text NOT NULL,
name text NOT NULL,
last_used_at timestamp with time zone,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
--
-- Name: passkeys_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.passkeys_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: passkeys_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.passkeys_id_seq OWNED BY public.passkeys.id;
--
-- Name: password_resets; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.password_resets (
id bigint NOT NULL,
user_id integer NOT NULL,
token text NOT NULL,
expires_at timestamp with time zone NOT NULL,
used_at timestamp with time zone,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
--
-- Name: password_resets_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.password_resets_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: password_resets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.password_resets_id_seq OWNED BY public.password_resets.id;
--
-- Name: schema_migrations; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.schema_migrations (
version character varying NOT NULL
);
--
-- Name: sessions; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.sessions (
id bigint NOT NULL,
user_id integer NOT NULL,
device_id bigint,
token_hash text NOT NULL,
trusted_mode boolean NOT NULL,
ip_address text,
city text,
region text,
country text,
user_agent text,
expires_at timestamp with time zone NOT NULL,
revoked_at timestamp with time zone,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
--
-- Name: sessions_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.sessions_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: sessions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.sessions_id_seq OWNED BY public.sessions.id;
--
-- Name: user_devices; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.user_devices (
id bigint NOT NULL,
user_id integer NOT NULL,
device_fingerprint text NOT NULL,
name text,
is_trusted boolean DEFAULT false NOT NULL,
user_agent text NOT NULL,
ip_address text,
city text,
region text,
country text,
last_used_at timestamp with time zone DEFAULT now() NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
--
-- Name: user_devices_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.user_devices_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: user_devices_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.user_devices_id_seq OWNED BY public.user_devices.id;
--
-- Name: users; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.users (
id integer NOT NULL,
email text NOT NULL,
email_verified_at timestamp with time zone,
full_name text,
display_name text,
phone_number text,
avatar_url text,
password_hash text,
require_passkey boolean DEFAULT false NOT NULL,
is_superuser boolean DEFAULT false NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL,
updated_at timestamp with time zone DEFAULT now() NOT NULL
);
--
-- Name: users_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.users_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: users_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.users_id_seq OWNED BY public.users.id;
--
-- Name: webauthn_challenges; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.webauthn_challenges (
id bigint NOT NULL,
options jsonb NOT NULL,
created_at timestamp with time zone DEFAULT now() NOT NULL
);
--
-- Name: webauthn_challenges_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.webauthn_challenges_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: webauthn_challenges_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.webauthn_challenges_id_seq OWNED BY public.webauthn_challenges.id;
--
-- Name: api_tokens id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.api_tokens ALTER COLUMN id SET DEFAULT nextval('public.api_tokens_id_seq'::regclass);
--
-- Name: email_verifications id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.email_verifications ALTER COLUMN id SET DEFAULT nextval('public.email_verifications_id_seq'::regclass);
--
-- Name: login_requests id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.login_requests ALTER COLUMN id SET DEFAULT nextval('public.login_requests_id_seq'::regclass);
--
-- Name: org_invites id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_invites ALTER COLUMN id SET DEFAULT nextval('public.org_invites_id_seq'::regclass);
--
-- Name: org_members id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_members ALTER COLUMN id SET DEFAULT nextval('public.org_members_id_seq'::regclass);
--
-- Name: org_sites id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_sites ALTER COLUMN id SET DEFAULT nextval('public.org_sites_id_seq'::regclass);
--
-- Name: orgs id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.orgs ALTER COLUMN id SET DEFAULT nextval('public.orgs_id_seq'::regclass);
--
-- Name: passkeys id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.passkeys ALTER COLUMN id SET DEFAULT nextval('public.passkeys_id_seq'::regclass);
--
-- Name: password_resets id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.password_resets ALTER COLUMN id SET DEFAULT nextval('public.password_resets_id_seq'::regclass);
--
-- Name: sessions id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sessions ALTER COLUMN id SET DEFAULT nextval('public.sessions_id_seq'::regclass);
--
-- Name: user_devices id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_devices ALTER COLUMN id SET DEFAULT nextval('public.user_devices_id_seq'::regclass);
--
-- Name: users id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.users ALTER COLUMN id SET DEFAULT nextval('public.users_id_seq'::regclass);
--
-- Name: webauthn_challenges id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.webauthn_challenges ALTER COLUMN id SET DEFAULT nextval('public.webauthn_challenges_id_seq'::regclass);
--
-- Name: api_tokens api_tokens_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.api_tokens
ADD CONSTRAINT api_tokens_pkey PRIMARY KEY (id);
--
-- Name: api_tokens api_tokens_token_hash_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.api_tokens
ADD CONSTRAINT api_tokens_token_hash_key UNIQUE (token_hash);
--
-- Name: email_verifications email_verifications_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.email_verifications
ADD CONSTRAINT email_verifications_pkey PRIMARY KEY (id);
--
-- Name: email_verifications email_verifications_token_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.email_verifications
ADD CONSTRAINT email_verifications_token_key UNIQUE (token);
--
-- Name: login_requests login_requests_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.login_requests
ADD CONSTRAINT login_requests_pkey PRIMARY KEY (id);
--
-- Name: login_requests login_requests_token_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.login_requests
ADD CONSTRAINT login_requests_token_key UNIQUE (token);
--
-- Name: login_requests login_requests_token_unique; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.login_requests
ADD CONSTRAINT login_requests_token_unique UNIQUE (token);
--
-- Name: org_invites org_invites_org_id_email_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_invites
ADD CONSTRAINT org_invites_org_id_email_key UNIQUE (org_id, email);
--
-- Name: org_invites org_invites_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_invites
ADD CONSTRAINT org_invites_pkey PRIMARY KEY (id);
--
-- Name: org_invites org_invites_token_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_invites
ADD CONSTRAINT org_invites_token_key UNIQUE (token);
--
-- Name: org_members org_members_org_id_user_id_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_members
ADD CONSTRAINT org_members_org_id_user_id_key UNIQUE (org_id, user_id);
--
-- Name: org_members org_members_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_members
ADD CONSTRAINT org_members_pkey PRIMARY KEY (id);
--
-- Name: org_sites org_sites_domain_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_sites
ADD CONSTRAINT org_sites_domain_key UNIQUE (domain);
--
-- Name: org_sites org_sites_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_sites
ADD CONSTRAINT org_sites_pkey PRIMARY KEY (id);
--
-- Name: orgs orgs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.orgs
ADD CONSTRAINT orgs_pkey PRIMARY KEY (id);
--
-- Name: orgs orgs_slug_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.orgs
ADD CONSTRAINT orgs_slug_key UNIQUE (slug);
--
-- Name: passkeys passkeys_credential_id_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.passkeys
ADD CONSTRAINT passkeys_credential_id_key UNIQUE (credential_id);
--
-- Name: passkeys passkeys_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.passkeys
ADD CONSTRAINT passkeys_pkey PRIMARY KEY (id);
--
-- Name: passkeys passkeys_webauthn_user_id_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.passkeys
ADD CONSTRAINT passkeys_webauthn_user_id_key UNIQUE (webauthn_user_id);
--
-- Name: password_resets password_resets_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.password_resets
ADD CONSTRAINT password_resets_pkey PRIMARY KEY (id);
--
-- Name: password_resets password_resets_token_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.password_resets
ADD CONSTRAINT password_resets_token_key UNIQUE (token);
--
-- Name: schema_migrations schema_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.schema_migrations
ADD CONSTRAINT schema_migrations_pkey PRIMARY KEY (version);
--
-- Name: sessions sessions_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sessions
ADD CONSTRAINT sessions_pkey PRIMARY KEY (id);
--
-- Name: sessions sessions_token_hash_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sessions
ADD CONSTRAINT sessions_token_hash_key UNIQUE (token_hash);
--
-- Name: user_devices user_devices_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_devices
ADD CONSTRAINT user_devices_pkey PRIMARY KEY (id);
--
-- Name: user_devices user_devices_user_id_device_fingerprint_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_devices
ADD CONSTRAINT user_devices_user_id_device_fingerprint_key UNIQUE (user_id, device_fingerprint);
--
-- Name: users users_email_key; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_email_key UNIQUE (email);
--
-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_pkey PRIMARY KEY (id);
--
-- Name: webauthn_challenges webauthn_challenges_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.webauthn_challenges
ADD CONSTRAINT webauthn_challenges_pkey PRIMARY KEY (id);
--
-- Name: idx_api_tokens_expires; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_api_tokens_expires ON public.api_tokens USING btree (expires_at);
--
-- Name: idx_api_tokens_user; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_api_tokens_user ON public.api_tokens USING btree (user_id);
--
-- Name: idx_email_verifications_expires; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_email_verifications_expires ON public.email_verifications USING btree (expires_at);
--
-- Name: idx_login_requests_expires; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_login_requests_expires ON public.login_requests USING btree (expires_at);
--
-- Name: idx_login_requests_token; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_login_requests_token ON public.login_requests USING btree (token);
--
-- Name: idx_login_requests_user; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_login_requests_user ON public.login_requests USING btree (user_id);
--
-- Name: idx_org_invites_email; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_org_invites_email ON public.org_invites USING btree (email);
--
-- Name: idx_org_invites_expires; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_org_invites_expires ON public.org_invites USING btree (expires_at);
--
-- Name: idx_org_members_org; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_org_members_org ON public.org_members USING btree (org_id);
--
-- Name: idx_org_members_user; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_org_members_user ON public.org_members USING btree (user_id);
--
-- Name: idx_org_sites_org; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_org_sites_org ON public.org_sites USING btree (org_id);
--
-- Name: idx_passkeys_user; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_passkeys_user ON public.passkeys USING btree (user_id);
--
-- Name: idx_password_resets_expires; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_password_resets_expires ON public.password_resets USING btree (expires_at);
--
-- Name: idx_password_resets_user; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_password_resets_user ON public.password_resets USING btree (user_id);
--
-- Name: idx_sessions_active; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_sessions_active ON public.sessions USING btree (token_hash) WHERE (revoked_at IS NULL);
--
-- Name: idx_sessions_device; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_sessions_device ON public.sessions USING btree (device_id);
--
-- Name: idx_sessions_user; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_sessions_user ON public.sessions USING btree (user_id);
--
-- Name: idx_user_devices_fingerprint; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_user_devices_fingerprint ON public.user_devices USING btree (device_fingerprint);
--
-- Name: idx_user_devices_user; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_user_devices_user ON public.user_devices USING btree (user_id);
--
-- Name: idx_webauthn_challenges_created; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX idx_webauthn_challenges_created ON public.webauthn_challenges USING btree (created_at);
--
-- Name: api_tokens api_tokens_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.api_tokens
ADD CONSTRAINT api_tokens_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: email_verifications email_verifications_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.email_verifications
ADD CONSTRAINT email_verifications_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: login_requests login_requests_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.login_requests
ADD CONSTRAINT login_requests_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: org_invites org_invites_invited_by_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_invites
ADD CONSTRAINT org_invites_invited_by_fkey FOREIGN KEY (invited_by) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: org_invites org_invites_org_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_invites
ADD CONSTRAINT org_invites_org_id_fkey FOREIGN KEY (org_id) REFERENCES public.orgs(id) ON DELETE CASCADE;
--
-- Name: org_members org_members_org_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_members
ADD CONSTRAINT org_members_org_id_fkey FOREIGN KEY (org_id) REFERENCES public.orgs(id) ON DELETE CASCADE;
--
-- Name: org_members org_members_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_members
ADD CONSTRAINT org_members_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: org_sites org_sites_org_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.org_sites
ADD CONSTRAINT org_sites_org_id_fkey FOREIGN KEY (org_id) REFERENCES public.orgs(id) ON DELETE CASCADE;
--
-- Name: passkeys passkeys_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.passkeys
ADD CONSTRAINT passkeys_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: password_resets password_resets_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.password_resets
ADD CONSTRAINT password_resets_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: sessions sessions_device_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sessions
ADD CONSTRAINT sessions_device_id_fkey FOREIGN KEY (device_id) REFERENCES public.user_devices(id) ON DELETE SET NULL;
--
-- Name: sessions sessions_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sessions
ADD CONSTRAINT sessions_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: user_devices user_devices_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_devices
ADD CONSTRAINT user_devices_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- PostgreSQL database dump complete
--
--
-- Dbmate schema migrations
--
INSERT INTO public.schema_migrations (version) VALUES
('001'),
('002');