From 9bbf45429c81294955a278d673655b2632161215 Mon Sep 17 00:00:00 2001 From: joemama Date: Sun, 2 Feb 2025 23:29:32 +0100 Subject: [PATCH] Added setup for postgres db --- setup.sql | 231 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 231 insertions(+) create mode 100644 setup.sql diff --git a/setup.sql b/setup.sql new file mode 100644 index 0000000..2bde32a --- /dev/null +++ b/setup.sql @@ -0,0 +1,231 @@ +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_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; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: matches; Type: TABLE; Schema: public; +-- + +CREATE TABLE public.matches ( + match_id integer NOT NULL, + player1_uid integer NOT NULL, + player2_uid integer, + player1_score integer, + player2_score integer, + player1_elo_change integer, + player2_elo_change integer, + match_date timestamp without time zone DEFAULT CURRENT_TIMESTAMP +); + + + +-- +-- Name: matches_2v2; Type: TABLE; Schema: public; +-- + +CREATE TABLE public.matches_2v2 ( + match_id integer NOT NULL, + player1_team1_uid integer, + player2_team1_uid integer, + player1_team2_uid integer, + player2_team2_uid integer, + player1_team1_score integer DEFAULT 0, + player2_team1_score integer DEFAULT 0, + player1_team2_score integer DEFAULT 0, + player2_team2_score integer DEFAULT 0, + trueskill_mu_team1 double precision, + trueskill_mu_team2 double precision, + trueskill_sigma_team1 double precision, + trueskill_sigma_team2 double precision, + team1_score integer DEFAULT 0, + team2_score integer DEFAULT 0, + match_date timestamp without time zone DEFAULT CURRENT_TIMESTAMP, + winner_team integer DEFAULT 0, + match_status character varying(20) DEFAULT 'in_progress'::character varying +); + + + +-- +-- Name: matches_2v2_match_id_seq; Type: SEQUENCE; Schema: public; +-- + +CREATE SEQUENCE public.matches_2v2_match_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + + +-- +-- Name: matches_2v2_match_id_seq; Type: SEQUENCE OWNED BY; Schema: public; +-- + +ALTER SEQUENCE public.matches_2v2_match_id_seq OWNED BY public.matches_2v2.match_id; + + +-- +-- Name: matches_match_id_seq; Type: SEQUENCE; Schema: public; +-- + +CREATE SEQUENCE public.matches_match_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + + +-- +-- Name: matches_match_id_seq; Type: SEQUENCE OWNED BY; Schema: public; +-- + +ALTER SEQUENCE public.matches_match_id_seq OWNED BY public.matches.match_id; + + +-- +-- Name: tournament_matches; Type: TABLE; Schema: public; +-- + +CREATE TABLE public.tournament_matches ( + tournament_match_id integer NOT NULL, + tournament_id integer NOT NULL, + round integer NOT NULL, + match_id integer, + player1_uid integer NOT NULL, + player2_uid integer NOT NULL, + winner_uid integer, + match_date timestamp without time zone DEFAULT CURRENT_TIMESTAMP +); + + + +-- +-- Name: tournament_matches_tournament_match_id_seq; Type: SEQUENCE; Schema: public; +-- + +CREATE SEQUENCE public.tournament_matches_tournament_match_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + + +ALTER SEQUENCE public.tournament_matches_tournament_match_id_seq OWNED BY public.tournament_matches.tournament_match_id; + +CREATE TABLE public.tournaments ( + tournament_id integer NOT NULL, + name character varying(255) NOT NULL, + start_date date NOT NULL, + end_date date, + status character varying(50) DEFAULT 'upcoming'::character varying, + bracket jsonb +); + + + +CREATE SEQUENCE public.tournaments_tournament_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER SEQUENCE public.tournaments_tournament_id_seq OWNED BY public.tournaments.tournament_id; + +CREATE TABLE public.users ( + uid integer NOT NULL, + email character varying(255) NOT NULL, + display_name character varying(100) NOT NULL, + password_hash character varying(255) NOT NULL, + current_elo integer DEFAULT 0, + friend_list jsonb DEFAULT '[]'::jsonb, + session_token character varying, + openskill_mu double precision DEFAULT 25.0, + openskill_sigma double precision DEFAULT 8.333 +); + + + +CREATE SEQUENCE public.users_uid_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + + + +ALTER SEQUENCE public.users_uid_seq OWNED BY public.users.uid; + +ALTER TABLE ONLY public.matches ALTER COLUMN match_id SET DEFAULT nextval('public.matches_match_id_seq'::regclass); + +ALTER TABLE ONLY public.matches_2v2 ALTER COLUMN match_id SET DEFAULT nextval('public.matches_2v2_match_id_seq'::regclass); + + +ALTER TABLE ONLY public.tournament_matches ALTER COLUMN tournament_match_id SET DEFAULT nextval('public.tournament_matches_tournament_match_id_seq'::regclass); + +ALTER TABLE ONLY public.tournaments ALTER COLUMN tournament_id SET DEFAULT nextval('public.tournaments_tournament_id_seq'::regclass); + +ALTER TABLE ONLY public.users ALTER COLUMN uid SET DEFAULT nextval('public.users_uid_seq'::regclass); + +ALTER TABLE ONLY public.matches_2v2 + ADD CONSTRAINT matches_2v2_pkey PRIMARY KEY (match_id); + +ALTER TABLE ONLY public.matches + ADD CONSTRAINT matches_pkey PRIMARY KEY (match_id); + +ALTER TABLE ONLY public.tournament_matches + ADD CONSTRAINT tournament_matches_pkey PRIMARY KEY (tournament_match_id); + +ALTER TABLE ONLY public.tournaments + ADD CONSTRAINT tournaments_pkey PRIMARY KEY (tournament_id); + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_email_key UNIQUE (email); + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_pkey PRIMARY KEY (uid); + +ALTER TABLE ONLY public.matches + ADD CONSTRAINT matches_player1_uid_fkey FOREIGN KEY (player1_uid) REFERENCES public.users(uid); + +ALTER TABLE ONLY public.matches + ADD CONSTRAINT matches_player2_uid_fkey FOREIGN KEY (player2_uid) REFERENCES public.users(uid); + +ALTER TABLE ONLY public.tournament_matches + ADD CONSTRAINT tournament_matches_player1_uid_fkey FOREIGN KEY (player1_uid) REFERENCES public.users(uid); + +ALTER TABLE ONLY public.tournament_matches + ADD CONSTRAINT tournament_matches_player2_uid_fkey FOREIGN KEY (player2_uid) REFERENCES public.users(uid); + +ALTER TABLE ONLY public.tournament_matches + ADD CONSTRAINT tournament_matches_tournament_id_fkey FOREIGN KEY (tournament_id) REFERENCES public.tournaments(tournament_id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.tournament_matches + ADD CONSTRAINT tournament_matches_winner_uid_fkey FOREIGN KEY (winner_uid) REFERENCES public.users(uid); + +