2026-05-08 10:08:53 +00:00
|
|
|
CREATE SCHEMA IF NOT EXISTS auth;
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS auth.users (
|
|
|
|
|
id uuid PRIMARY KEY,
|
|
|
|
|
email text NOT NULL UNIQUE,
|
|
|
|
|
encrypted_password text NOT NULL,
|
|
|
|
|
raw_user_meta_data jsonb NOT NULL DEFAULT '{}'::jsonb,
|
|
|
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
|
|
|
updated_at timestamptz NOT NULL DEFAULT now()
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS public.users (
|
|
|
|
|
id uuid PRIMARY KEY REFERENCES auth.users(id) ON DELETE CASCADE,
|
|
|
|
|
email text NOT NULL UNIQUE,
|
|
|
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
|
|
|
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
|
|
|
display_name text NOT NULL
|
|
|
|
|
);
|
|
|
|
|
|
2026-05-08 14:03:54 +00:00
|
|
|
CREATE TABLE IF NOT EXISTS auth.sessions (
|
|
|
|
|
id uuid PRIMARY KEY,
|
|
|
|
|
session_token text NOT NULL UNIQUE,
|
|
|
|
|
user_id uuid NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
|
|
|
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
|
|
|
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
|
|
|
expires_at timestamptz NOT NULL
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE INDEX IF NOT EXISTS auth_sessions_user_id_idx ON auth.sessions(user_id);
|
|
|
|
|
|
2026-05-08 10:08:53 +00:00
|
|
|
CREATE OR REPLACE FUNCTION public.handle_new_user() RETURNS trigger
|
|
|
|
|
LANGUAGE plpgsql
|
|
|
|
|
SECURITY DEFINER
|
|
|
|
|
AS $$
|
|
|
|
|
BEGIN
|
|
|
|
|
INSERT INTO public.users (id, email, created_at, updated_at, display_name)
|
|
|
|
|
VALUES (
|
|
|
|
|
NEW.id,
|
|
|
|
|
NEW.email,
|
|
|
|
|
NEW.created_at,
|
|
|
|
|
NEW.updated_at,
|
|
|
|
|
COALESCE(NEW.raw_user_meta_data ->> 'display_name', split_part(NEW.email, '@', 1))
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
RETURN NEW;
|
|
|
|
|
END;
|
|
|
|
|
$$;
|
|
|
|
|
|
|
|
|
|
DROP TRIGGER IF EXISTS on_auth_user_created ON auth.users;
|
|
|
|
|
CREATE TRIGGER on_auth_user_created
|
|
|
|
|
AFTER INSERT ON auth.users
|
|
|
|
|
FOR EACH ROW
|
|
|
|
|
EXECUTE FUNCTION public.handle_new_user();
|