dth-pingpong-backend/setup.sql

232 lines
6.3 KiB
MySQL
Raw Normal View History

2025-02-02 23:29:32 +01:00
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);