2197 lines
57 KiB
PL/PgSQL
2197 lines
57 KiB
PL/PgSQL
-- Downloaded from: https://github.com/StrangeGoofy/Yota_game/blob/9877bad67b39a3661fc74a08af21a86ddd3e52dc/dump.sql
|
|
--
|
|
-- PostgreSQL database dump
|
|
--
|
|
|
|
-- Dumped from database version 16.4
|
|
-- Dumped by pg_dump version 16.4
|
|
|
|
-- Started on 2025-03-18 01:12:38
|
|
|
|
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;
|
|
|
|
--
|
|
-- TOC entry 2610 (class 2615 OID 35447)
|
|
-- Name: s314500; Type: SCHEMA; Schema: -; Owner: s314500
|
|
--
|
|
|
|
CREATE SCHEMA s314500;
|
|
|
|
|
|
ALTER SCHEMA s314500 OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 50491 (class 1255 OID 1371782)
|
|
-- Name: check_card_validity(integer, integer, integer, integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.check_card_validity(p_lobby integer, p_x integer, p_y integer, p_type integer) RETURNS boolean
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
x_shapes text;
|
|
x_numbers smallint;
|
|
x_colors text;
|
|
|
|
y_shapes text;
|
|
y_numbers smallint;
|
|
y_colors text;
|
|
|
|
x_count integer;
|
|
y_count integer;
|
|
|
|
shape text;
|
|
number smallint;
|
|
color text;
|
|
BEGIN
|
|
|
|
SELECT t.shape, t.number, t.color from cards c
|
|
JOIN cards_types t ON c.card_type_id = t.id
|
|
WHERE c.card_id = p_type
|
|
INTO shape, number, color;
|
|
|
|
-- Если место уже занято
|
|
IF EXISTS (SELECT 1 FROM get_cards_on_table(p_lobby) WHERE x = p_x AND y = p_y) THEN
|
|
RAISE NOTICE 'Клетка уже занята';
|
|
RETURN FALSE;
|
|
END IF;
|
|
|
|
-- Если не найдено соседних клеток
|
|
IF NOT EXISTS (SELECT 1 FROM get_adjacent_cards(p_lobby, p_x, p_y)) THEN
|
|
RAISE NOTICE 'У клетки должен быть хоть один сосед';
|
|
RETURN FALSE;
|
|
END IF;
|
|
|
|
SELECT COUNT (1) FROM get_adjacent_cards(p_lobby, p_x, p_y) a
|
|
WHERE a.x = p_x
|
|
INTO x_count;
|
|
|
|
IF x_count > 3 THEN
|
|
RAISE NOTICE 'Слишком много соседей по горизонтали';
|
|
RETURN FALSE;
|
|
END IF;
|
|
|
|
SELECT COUNT (1) FROM get_adjacent_cards(p_lobby, p_x, p_y) a
|
|
WHERE a.y = p_y
|
|
INTO y_count;
|
|
|
|
IF y_count > 3 THEN
|
|
RAISE NOTICE 'Слишком много соседей по вертикали';
|
|
RETURN FALSE;
|
|
END IF;
|
|
|
|
IF NOT (p_type IN (SELECT id FROM get_possible_cards(p_lobby, p_x, p_y))) THEN
|
|
RAISE NOTICE 'Карта не подходит';
|
|
RETURN FALSE;
|
|
END IF;
|
|
|
|
RETURN TRUE;
|
|
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.check_card_validity(p_lobby integer, p_x integer, p_y integer, p_type integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 51873 (class 1255 OID 1217449)
|
|
-- Name: checktoken(integer); Type: PROCEDURE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE PROCEDURE s314500.checktoken(IN tk integer)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
tokenExists BOOLEAN;
|
|
BEGIN
|
|
-- Проверка существования токена
|
|
SELECT EXISTS (SELECT 1 FROM Tokens WHERE token = tk) INTO tokenExists;
|
|
RAISE NOTICE 'isValid: %', tokenExists;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE s314500.checktoken(IN tk integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 54425 (class 1255 OID 1217448)
|
|
-- Name: cleartokens(); Type: PROCEDURE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE PROCEDURE s314500.cleartokens()
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
-- Удаление старых токенов (больше чем 7 дней)
|
|
DELETE FROM Tokens WHERE created < NOW() - INTERVAL '7 days';
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE s314500.cleartokens() OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 54756 (class 1255 OID 1371779)
|
|
-- Name: createlobby(integer, character varying, integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.createlobby(tk integer, pw character varying, turnt integer) RETURNS integer
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
userLogin VARCHAR(64);
|
|
userId INT;
|
|
lobbyId INT;
|
|
BEGIN
|
|
-- Получаем логин по токену
|
|
SELECT login INTO userLogin FROM tokens WHERE token = tk;
|
|
IF userLogin IS NULL THEN
|
|
RAISE EXCEPTION 'Невалидный токен';
|
|
END IF;
|
|
|
|
-- Получаем userId
|
|
SELECT id INTO userId FROM users WHERE login = userLogin;
|
|
|
|
-- Создаем лобби
|
|
INSERT INTO lobbies (password, turn_time, host_id, state)
|
|
VALUES (pw, turnT, userId, 'Start')
|
|
RETURNING id INTO lobbyId;
|
|
|
|
-- Добавляем пользователя в лобби
|
|
INSERT INTO players (id,login, lobby_id, is_ready)
|
|
VALUES (userId, userLogin, lobbyId, true);
|
|
|
|
RETURN lobbyId;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.createlobby(tk integer, pw character varying, turnt integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 50936 (class 1255 OID 1371803)
|
|
-- Name: createlobby(integer, character varying, character varying, integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.createlobby(tk integer, p_nickname character varying, pw character varying, turnt integer) RETURNS integer
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
userLogin VARCHAR(64);
|
|
userId INT;
|
|
lobbyId INT;
|
|
BEGIN
|
|
-- Получаем логин по токену
|
|
SELECT login INTO userLogin FROM tokens WHERE token = tk;
|
|
IF userLogin IS NULL THEN
|
|
RAISE EXCEPTION 'Невалидный токен';
|
|
END IF;
|
|
|
|
-- Получаем userId
|
|
SELECT id INTO userId FROM users WHERE login = userLogin;
|
|
|
|
-- Создаем лобби
|
|
INSERT INTO lobbies (password, turn_time, host_id, state)
|
|
VALUES (pw, turnT, userId, 'Start')
|
|
RETURNING id INTO lobbyId;
|
|
|
|
-- Добавляем пользователя в лобби
|
|
INSERT INTO players (login, nickname, lobby_id, is_ready)
|
|
VALUES (userLogin, p_nickname, lobbyId, true);
|
|
|
|
RETURN lobbyId;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.createlobby(tk integer, p_nickname character varying, pw character varying, turnt integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 50376 (class 1255 OID 1217458)
|
|
-- Name: enterlobby(integer, integer, character varying); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.enterlobby(tk integer, lobbyid integer, inputpassword character varying) RETURNS text
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
userLogin VARCHAR(64);
|
|
userId INT;
|
|
actualPassword VARCHAR(10);
|
|
BEGIN
|
|
-- Получаем логин по токену
|
|
SELECT login INTO userLogin FROM tokens WHERE token = tk;
|
|
IF userLogin IS NULL THEN
|
|
RETURN 'Невалидный токен';
|
|
END IF;
|
|
|
|
-- Получаем userId
|
|
SELECT id INTO userId FROM users WHERE login = userLogin;
|
|
|
|
-- Проверка, что пользователь не в лобби
|
|
IF EXISTS (SELECT 1 FROM players WHERE user_id = userId AND lobby_id = lobbyId) THEN
|
|
RETURN 'Пользователь уже в лобби';
|
|
END IF;
|
|
|
|
-- Проверка на пароль
|
|
SELECT password INTO actualPassword FROM lobbies WHERE id = lobbyId;
|
|
IF actualPassword IS NOT NULL AND inputPassword != actualPassword THEN
|
|
RETURN 'Неверный пароль';
|
|
END IF;
|
|
|
|
-- Проверка на максимальное количество игроков
|
|
IF (SELECT COUNT(*) FROM players WHERE lobby_id = lobbyId) = 4 THEN
|
|
RETURN 'Лобби полное';
|
|
END IF;
|
|
|
|
-- Вход в лобби
|
|
INSERT INTO players (user_id, lobby_id) VALUES (userId, lobbyId);
|
|
RETURN 'Вход в лобби выполнен';
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.enterlobby(tk integer, lobbyid integer, inputpassword character varying) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 52142 (class 1255 OID 1376656)
|
|
-- Name: get_adjacent_cards(integer, integer, integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.get_adjacent_cards(p_lobby integer, p_x integer, p_y integer) RETURNS TABLE(x smallint, y smallint, shape text, color text, number smallint)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
|
|
RETURN QUERY
|
|
WITH RECURSIVE
|
|
left_x_neighbors AS (
|
|
-- Находим ближайшее существующее значение x, которое меньше param
|
|
(SELECT t.x, t.y, t.shape, t.color, t.number FROM get_cards_on_table(p_lobby) t WHERE t.x = p_x - 1 AND t.y = p_y)
|
|
UNION ALL
|
|
-- Добавляем предыдущее значение, если оно есть
|
|
SELECT t.x, t.y, t.shape, t.color, t.number FROM get_cards_on_table(p_lobby) t
|
|
JOIN left_x_neighbors n ON t.x = n.x - 1
|
|
WHERE t.y = p_y
|
|
),
|
|
|
|
right_x_neighbors AS (
|
|
-- Находим ближайшее существующее значение x, которое больше param
|
|
(SELECT t.x, t.y, t.shape, t.color, t.number FROM get_cards_on_table(p_lobby) t WHERE t.x = p_x + 1 AND t.y = p_y)
|
|
UNION ALL
|
|
-- Добавляем следующее значение, если оно есть
|
|
SELECT t.x, t.y, t.shape, t.color, t.number FROM get_cards_on_table(p_lobby) t
|
|
JOIN right_x_neighbors n ON t.x = n.x + 1
|
|
WHERE t.y = p_y
|
|
),
|
|
|
|
left_y_neighbors AS (
|
|
-- Находим ближайшее существующее значение y, которое меньше param
|
|
(SELECT t.x, t.y, t.shape, t.color, t.number FROM get_cards_on_table(p_lobby) t WHERE t.y = p_y - 1 AND t.x = p_x)
|
|
UNION ALL
|
|
-- Добавляем предыдущее значение, если оно есть
|
|
SELECT t.x, t.y, t.shape, t.color, t.number FROM get_cards_on_table(p_lobby) t
|
|
JOIN left_y_neighbors n ON t.y = n.y - 1
|
|
WHERE t.x = p_x
|
|
),
|
|
|
|
right_y_neighbors AS (
|
|
-- Находим ближайшее существующее значение y, которое больше param
|
|
(SELECT t.x, t.y, t.shape, t.color, t.number FROM get_cards_on_table(p_lobby) t WHERE t.y = p_y + 1 AND t.x = p_x)
|
|
UNION ALL
|
|
-- Добавляем следующее значение, если оно есть
|
|
SELECT t.x, t.y, t.shape, t.color, t.number FROM get_cards_on_table(p_lobby) t
|
|
JOIN right_y_neighbors n ON t.y = n.y + 1
|
|
WHERE t.x = p_x
|
|
)
|
|
|
|
SELECT lx.x, lx.y, lx.shape, lx.color, lx.number FROM left_x_neighbors lx
|
|
UNION
|
|
SELECT rx.x, rx.y, rx.shape, rx.color, rx.number FROM right_x_neighbors rx
|
|
UNION
|
|
SELECT ly.x, ly.y, ly.shape, ly.color, ly.number FROM left_y_neighbors ly
|
|
UNION
|
|
SELECT ry.x, ry.y, ry.shape, ry.color, ry.number FROM right_y_neighbors ry;
|
|
|
|
END
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.get_adjacent_cards(p_lobby integer, p_x integer, p_y integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 52953 (class 1255 OID 1371353)
|
|
-- Name: get_cards_on_table(integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.get_cards_on_table(lobby integer) RETURNS TABLE(x smallint, y smallint, shape text, color text, number smallint)
|
|
LANGUAGE plpgsql
|
|
AS $$BEGIN
|
|
|
|
RETURN QUERY
|
|
SELECT pos.x, pos.y, c.shape, c.color, c.number FROM cards_on_table pos
|
|
LEFT JOIN cards ON pos.card_id = cards.card_id
|
|
LEFT JOIN cards_types c ON cards.card_id = c.id
|
|
WHERE pos.lobby_id = lobby;
|
|
|
|
END;$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.get_cards_on_table(lobby integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 50727 (class 1255 OID 1376860)
|
|
-- Name: get_possible_cards(integer, integer, integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.get_possible_cards(p_lobby integer, p_x integer, p_y integer) RETURNS TABLE(id integer, possible_color text, possible_shape text, possible_number smallint)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
|
|
y_count integer;
|
|
x_count integer;
|
|
|
|
BEGIN
|
|
|
|
SELECT COUNT(DISTINCT(x)) FROM get_adjacent_cards(p_lobby, p_x, p_y)
|
|
WHERE y = p_y
|
|
INTO x_count;
|
|
|
|
SELECT COUNT(DISTINCT(y)) FROM get_adjacent_cards(p_lobby, p_x, p_y)
|
|
WHERE x = p_x
|
|
INTO y_count;
|
|
|
|
RETURN QUERY
|
|
WITH
|
|
distinct_color_x AS
|
|
(
|
|
SELECT DISTINCT(c.color) FROM get_adjacent_cards(p_lobby, p_x, p_y) c
|
|
WHERE y = p_y
|
|
),
|
|
distinct_color_y AS
|
|
(
|
|
SELECT DISTINCT(c.color) FROM get_adjacent_cards(p_lobby, p_x, p_y) c
|
|
WHERE x = p_x
|
|
),
|
|
possible_colors AS
|
|
(
|
|
(
|
|
(
|
|
SELECT c.color FROM distinct_color_x c
|
|
WHERE (SELECT COUNT(1) FROM distinct_color_x) = 1
|
|
)
|
|
UNION
|
|
(
|
|
SELECT t.name as color FROM t_card_color t
|
|
WHERE (SELECT COUNT(1) FROM distinct_color_x) = x_count
|
|
EXCEPT SELECT color FROM distinct_color_x
|
|
)
|
|
)
|
|
INTERSECT
|
|
(
|
|
(
|
|
SELECT c.color FROM distinct_color_y c
|
|
WHERE (SELECT COUNT(1) FROM distinct_color_y) = 1
|
|
)
|
|
UNION
|
|
(
|
|
SELECT t.name as color FROM t_card_color t
|
|
WHERE (SELECT COUNT(1) FROM distinct_color_y) = y_count
|
|
EXCEPT SELECT c.color FROM distinct_color_y c
|
|
)
|
|
)
|
|
),
|
|
distinct_shape_x AS
|
|
(
|
|
SELECT DISTINCT(c.shape) FROM get_adjacent_cards(p_lobby, p_x, p_y) c
|
|
WHERE y = p_y
|
|
),
|
|
distinct_shape_y AS
|
|
(
|
|
SELECT DISTINCT(c.shape) FROM get_adjacent_cards(p_lobby, p_x, p_y) c
|
|
WHERE x = p_x
|
|
),
|
|
possible_shapes AS
|
|
(
|
|
(
|
|
(
|
|
SELECT c.shape FROM distinct_shape_x c
|
|
WHERE (SELECT COUNT(1) FROM distinct_shape_x) = 1
|
|
)
|
|
UNION
|
|
(
|
|
SELECT t.name as shape FROM t_card_shape t
|
|
WHERE (SELECT COUNT(1) FROM distinct_shape_x) = x_count
|
|
EXCEPT SELECT shape FROM distinct_shape_x
|
|
)
|
|
)
|
|
INTERSECT
|
|
(
|
|
(
|
|
SELECT c.shape FROM distinct_shape_y c
|
|
WHERE (SELECT COUNT(1) FROM distinct_shape_y) = 1
|
|
)
|
|
UNION
|
|
(
|
|
SELECT t.name as shape FROM t_card_shape t
|
|
WHERE (SELECT COUNT(1) FROM distinct_shape_y) = y_count
|
|
EXCEPT SELECT c.shape FROM distinct_shape_y c
|
|
)
|
|
)
|
|
),
|
|
distinct_number_x AS
|
|
(
|
|
SELECT DISTINCT(c.number) FROM get_adjacent_cards(p_lobby, p_x, p_y) c
|
|
WHERE y = p_y
|
|
),
|
|
distinct_number_y AS
|
|
(
|
|
SELECT DISTINCT(c.number) FROM get_adjacent_cards(p_lobby, p_x, p_y) c
|
|
WHERE x = p_x
|
|
),
|
|
possible_numbers AS
|
|
(
|
|
(
|
|
(
|
|
SELECT c.number FROM distinct_number_x c
|
|
WHERE (SELECT COUNT(1) FROM distinct_number_x) = 1
|
|
)
|
|
UNION
|
|
(
|
|
SELECT t.number as number FROM t_card_number t
|
|
WHERE (SELECT COUNT(1) FROM distinct_number_x) = x_count
|
|
EXCEPT SELECT number FROM distinct_number_x
|
|
)
|
|
)
|
|
INTERSECT
|
|
(
|
|
(
|
|
SELECT c.number FROM distinct_number_y c
|
|
WHERE (SELECT COUNT(1) FROM distinct_number_y) = 1
|
|
)
|
|
UNION
|
|
(
|
|
SELECT t.number as number FROM t_card_number t
|
|
WHERE (SELECT COUNT(1) FROM distinct_number_y) = y_count
|
|
EXCEPT SELECT c.number FROM distinct_number_y c
|
|
)
|
|
)
|
|
)
|
|
|
|
SELECT t.id, t.color, t.shape, t.number FROM cards_types t
|
|
WHERE
|
|
t.color IN (SELECT color FROM possible_colors) AND
|
|
t.shape IN (SELECT shape FROM possible_shapes) AND
|
|
t.number IN (SELECT number FROM possible_numbers);
|
|
|
|
-- SELECT 0, p.color, '', 0::smallint FROM possible_colors p;
|
|
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.get_possible_cards(p_lobby integer, p_x integer, p_y integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 53243 (class 1255 OID 1217452)
|
|
-- Name: getcurrentgames(integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.getcurrentgames(tk integer) RETURNS TABLE(id integer, usercount integer, hostlogin character varying)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
userLogin VARCHAR(64);
|
|
userId INT;
|
|
BEGIN
|
|
-- Получаем логин по токену
|
|
SELECT login INTO userLogin FROM Tokens WHERE token = tk;
|
|
IF userLogin IS NULL THEN
|
|
RAISE EXCEPTION 'Невалидный токен';
|
|
END IF;
|
|
|
|
-- Получаем userId
|
|
SELECT id INTO userId FROM Users WHERE login = userLogin;
|
|
|
|
-- Запрос
|
|
RETURN QUERY
|
|
SELECT gl.id,
|
|
COUNT(ul2.user_id) AS userCount,
|
|
u.login AS hostLogin
|
|
FROM GameLobbies AS gl
|
|
JOIN UsersInLobby AS ul ON gl.id = ul.lobby_id
|
|
LEFT JOIN UsersInLobby AS ul2 ON gl.id = ul2.lobby_id
|
|
LEFT JOIN Users u ON gl.host_id = u.id
|
|
WHERE ul.user_id = userId
|
|
GROUP BY gl.id, u.login;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.getcurrentgames(tk integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 54609 (class 1255 OID 1217454)
|
|
-- Name: gethost(integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.gethost(lobbyid integer) RETURNS integer
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
RETURN (SELECT host_id FROM lobbies WHERE id = lobbyid);
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.gethost(lobbyid integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 53004 (class 1255 OID 1371783)
|
|
-- Name: getlobbysettings(integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.getlobbysettings(lobbyid integer) RETURNS TABLE(haspassword boolean, turn_time integer)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
RETURN QUERY
|
|
SELECT
|
|
CASE WHEN password IS NOT NULL THEN TRUE ELSE FALSE END AS hasPassword,
|
|
turn_time
|
|
FROM lobbies
|
|
WHERE id = lobbyId;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.getlobbysettings(lobbyid integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 50629 (class 1255 OID 1217500)
|
|
-- Name: getuserid(integer); Type: PROCEDURE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE PROCEDURE s314500.getuserid(IN tk integer)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
userLogin VARCHAR(64) := getUserLoginByToken(tk);
|
|
BEGIN
|
|
-- Получение id пользователя по логину
|
|
SELECT id FROM Users WHERE login = userLogin;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE s314500.getuserid(IN tk integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 52924 (class 1255 OID 1217450)
|
|
-- Name: getuserloginbytoken(integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.getuserloginbytoken(tk integer) RETURNS character varying
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
userLogin VARCHAR(64);
|
|
BEGIN
|
|
-- Получение логина по токену
|
|
SELECT login INTO userLogin FROM tokens WHERE token = tk;
|
|
RETURN userLogin;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.getuserloginbytoken(tk integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 53948 (class 1255 OID 1217453)
|
|
-- Name: getusersinlobby(integer, integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.getusersinlobby(tk integer, lobbyid integer) RETURNS TABLE(user_id integer, login character varying, win_count integer, is_ready boolean)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
userLogin VARCHAR(64);
|
|
userId INT;
|
|
BEGIN
|
|
-- Получаем логин по токену
|
|
SELECT login INTO userLogin FROM tokens WHERE token = tk;
|
|
IF userLogin IS NULL THEN
|
|
RAISE EXCEPTION 'Невалидный токен';
|
|
END IF;
|
|
|
|
-- Получаем userId
|
|
SELECT id INTO userId FROM Users WHERE login = userLogin;
|
|
|
|
-- Проверка на существование лобби
|
|
IF NOT EXISTS (SELECT 1 FROM lobbies WHERE id = lobbyId) THEN
|
|
RAISE EXCEPTION 'Лобби не существует';
|
|
END IF;
|
|
|
|
-- Проверка на то, что пользователь в лобби
|
|
IF NOT EXISTS (SELECT 1 FROM players WHERE user_id = userId AND lobby_id = lobbyId) THEN
|
|
RAISE EXCEPTION 'Пользователь не в лобби';
|
|
END IF;
|
|
|
|
-- Запрос
|
|
RETURN QUERY
|
|
SELECT u.id AS user_id, u.login, p.is_ready
|
|
FROM players p
|
|
JOIN users u ON p.user_id = u.id
|
|
WHERE p.lobby_id = lobbyId;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.getusersinlobby(tk integer, lobbyid integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 54217 (class 1255 OID 1217465)
|
|
-- Name: hashpassword(character varying); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.hashpassword(password character varying) RETURNS character varying
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
-- Хэширование пароля с добавлением соли 'megasalt'
|
|
RETURN encode(convert_to(CONCAT(password, 'megasalt'), 'UTF8'), 'hex');
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.hashpassword(password character varying) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 55466 (class 1255 OID 1217748)
|
|
-- Name: hello_world(); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.hello_world() RETURNS text
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
RETURN 'Hello, World!';
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.hello_world() OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 53786 (class 1255 OID 1371335)
|
|
-- Name: initgame(integer); Type: PROCEDURE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE PROCEDURE s314500.initgame(IN id_lobby integer)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
x integer;
|
|
BEGIN
|
|
-- Вызов mashup
|
|
CALL mashup(id_lobby);
|
|
|
|
-- Получаем card_id
|
|
SELECT card_id INTO x FROM Cards_in_deck LIMIT 1;
|
|
|
|
-- Вставляем карту на стол
|
|
INSERT INTO CardsOnTable
|
|
SELECT * FROM Cards_in_deck WHERE card_id = x;
|
|
|
|
-- Удаляем карту из колоды
|
|
DELETE FROM Cards_in_deck WHERE card_id = x;
|
|
|
|
-- Создаём места в лобби
|
|
CALL makePlaces(id_lobby, 4);
|
|
|
|
-- Определяем случайного игрока, который начнёт ход
|
|
INSERT INTO Current_Turn (player_id)
|
|
SELECT player_id FROM Players
|
|
WHERE lobby_id = id_lobby
|
|
ORDER BY RANDOM()
|
|
LIMIT 1;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE s314500.initgame(IN id_lobby integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 54206 (class 1255 OID 1217457)
|
|
-- Name: isgamestarted(integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.isgamestarted(lobbyid integer) RETURNS boolean
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
RETURN EXISTS (
|
|
SELECT 1
|
|
FROM CurrentTurn
|
|
WHERE turn_player_id IN (SELECT id FROM Players WHERE lobby_id = lobbyId)
|
|
);
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.isgamestarted(lobbyid integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 53391 (class 1255 OID 1217460)
|
|
-- Name: leavelobby(integer, integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.leavelobby(tk integer, lobbyid integer) RETURNS text
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
userLogin VARCHAR(64);
|
|
userId INT;
|
|
currentHostId INT;
|
|
BEGIN
|
|
-- Получаем логин по токену
|
|
SELECT login INTO userLogin FROM tokens WHERE token = tk;
|
|
IF userLogin IS NULL THEN
|
|
RETURN 'Невалидный токен';
|
|
END IF;
|
|
|
|
-- Получаем userId
|
|
SELECT id INTO userId FROM users WHERE login = userLogin;
|
|
|
|
-- Проверка, является ли пользователь хостом
|
|
SELECT host_id INTO currentHostId FROM lobbies WHERE id = lobbyId;
|
|
IF currentHostId = userId THEN
|
|
IF (SELECT COUNT(*) FROM players WHERE lobby_id = lobbyId) > 1 THEN
|
|
UPDATE lobbies
|
|
SET host_id = (
|
|
SELECT user_id
|
|
FROM players
|
|
WHERE lobby_id = lobbyId
|
|
AND user_id != userId
|
|
ORDER BY RANDOM()
|
|
LIMIT 1
|
|
)
|
|
WHERE id = lobbyId;
|
|
ELSE
|
|
DELETE FROM lobbies WHERE id = lobbyId;
|
|
END IF;
|
|
END IF;
|
|
|
|
DELETE FROM players WHERE user_id = userId AND lobby_id = lobbyId;
|
|
RETURN 'Выход из лобби выполнен';
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.leavelobby(tk integer, lobbyid integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 55024 (class 1255 OID 1217495)
|
|
-- Name: login(character varying, character varying); Type: PROCEDURE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE PROCEDURE s314500.login(IN lg character varying, IN pw character varying)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
tk bigint;
|
|
BEGIN
|
|
-- Генерация случайного токена
|
|
tk := floor(random() * 4000000000) + 1;
|
|
|
|
-- Проверка пароля
|
|
IF hashPassword(pw) = (SELECT password FROM Users WHERE login = lg LIMIT 1) THEN
|
|
-- Очистка токенов (предполагается, что процедура clearTokens() уже создана)
|
|
CALL clearTokens();
|
|
|
|
-- Вставка нового токена
|
|
INSERT INTO Tokens (token, login) VALUES (tk, lg);
|
|
|
|
-- Возвращаем id пользователя и токен
|
|
|
|
PERFORM
|
|
(SELECT id FROM Users WHERE login = lg LIMIT 1),
|
|
(SELECT tk FROM Users WHERE login = lg LIMIT 1);
|
|
ELSE
|
|
-- Если логин или пароль неверный
|
|
RAISE EXCEPTION 'Пароль или логин неверный';
|
|
END IF;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE s314500.login(IN lg character varying, IN pw character varying) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 55754 (class 1255 OID 1217445)
|
|
-- Name: logout(integer); Type: PROCEDURE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE PROCEDURE s314500.logout(IN tk integer)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
-- Удаление токена
|
|
DELETE FROM Tokens WHERE token = tk;
|
|
|
|
-- Проверка, были ли удалены строки
|
|
IF NOT FOUND THEN
|
|
-- Если токен не был найден
|
|
RAISE EXCEPTION 'Невалидный токен';
|
|
ELSE
|
|
-- Если токен был успешно удален
|
|
RAISE NOTICE 'Вы успешно вышли из аккаунта';
|
|
END IF;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE s314500.logout(IN tk integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 53158 (class 1255 OID 1332580)
|
|
-- Name: make_places(integer, integer); Type: PROCEDURE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE PROCEDURE s314500.make_places(IN id_lobby integer, IN count_cards integer)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
total_cards INT;
|
|
count_players INT;
|
|
BEGIN
|
|
-- Создание временной таблицы для игроков
|
|
CREATE TEMP TABLE tmp (
|
|
n SERIAL PRIMARY KEY,
|
|
id INT
|
|
) ON COMMIT DROP;
|
|
|
|
-- Заполняем временную таблицу случайным порядком игроков из лобби
|
|
INSERT INTO tmp(id)
|
|
SELECT player_id FROM Players WHERE lobby_id = id_lobby ORDER BY RANDOM();
|
|
|
|
-- Подсчитываем количество игроков
|
|
SELECT COUNT(*) INTO count_players FROM tmp;
|
|
|
|
-- Вычисляем общее количество карт
|
|
total_cards := count_players * count_cards;
|
|
|
|
-- Создание временной таблицы для карт
|
|
CREATE TEMP TABLE tmpCards (
|
|
n SERIAL PRIMARY KEY,
|
|
id_card INT
|
|
) ON COMMIT DROP;
|
|
|
|
-- Заполняем временную таблицу случайными картами из колоды, ограничивая по total_cards
|
|
INSERT INTO tmpCards(id_card)
|
|
SELECT card_id FROM Cards_in_Deck WHERE lobby_id = id_lobby ORDER BY RANDOM() LIMIT total_cards;
|
|
|
|
-- Распределяем карты между игроками
|
|
INSERT INTO Cards_in_hand (player_id, card_id)
|
|
SELECT tmp.id AS player_id, tmpCards.id_card
|
|
FROM tmpCards
|
|
JOIN tmp ON tmp.n = (tmpCards.n % count_players) + 1;
|
|
|
|
END $$;
|
|
|
|
|
|
ALTER PROCEDURE s314500.make_places(IN id_lobby integer, IN count_cards integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 52249 (class 1255 OID 1371336)
|
|
-- Name: makeplaces(integer, integer); Type: PROCEDURE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE PROCEDURE s314500.makeplaces(IN id_lobby integer, IN count_cards integer)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
total_cards integer;
|
|
count_players integer;
|
|
BEGIN
|
|
-- Создание временной таблицы для игроков (случайный порядок)
|
|
CREATE TEMP TABLE tmp (
|
|
n SERIAL PRIMARY KEY,
|
|
id integer
|
|
) ON COMMIT DROP;
|
|
|
|
-- Заполнение временной таблицы случайно отсортированными игроками
|
|
INSERT INTO tmp(id)
|
|
SELECT player_id FROM Players WHERE lobby_id = id_lobby ORDER BY RANDOM();
|
|
|
|
-- Подсчёт количества игроков
|
|
SELECT COUNT(*) INTO count_players FROM tmp;
|
|
|
|
-- Вычисление общего количества карт
|
|
total_cards := count_players * count_cards;
|
|
|
|
CREATE TEMP TABLE tmpCards (
|
|
n SERIAL PRIMARY KEY,
|
|
id_card integer
|
|
) ON COMMIT DROP;
|
|
|
|
-- Заполнение картами (случайный порядок)
|
|
INSERT INTO tmpCards(id_card)
|
|
SELECT card_id FROM Cards_in_Deck WHERE lobby_id = id_lobby ORDER BY RANDOM() LIMIT total_cards;
|
|
|
|
-- Раздача карт игрокам
|
|
INSERT INTO Cards_in_hand (player_id, card_id)
|
|
SELECT tmp.id AS player_id, tmpCards.id_card
|
|
FROM tmpCards
|
|
JOIN tmp ON tmp.n = (tmpCards.n % count_players) + 1;
|
|
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE s314500.makeplaces(IN id_lobby integer, IN count_cards integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 54287 (class 1255 OID 1371334)
|
|
-- Name: mashup(integer); Type: PROCEDURE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE PROCEDURE s314500.mashup(IN id_lobby integer)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
-- Вставляем случайно отсортированные карты из cards в cards_in_tables
|
|
INSERT INTO cards_on_table (card_id, lobby_id)
|
|
SELECT card_id, lobby_id FROM cards
|
|
ORDER BY RANDOM();
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE s314500.mashup(IN id_lobby integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 50560 (class 1255 OID 1217466)
|
|
-- Name: register(character varying, character varying); Type: PROCEDURE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE PROCEDURE s314500.register(IN login character varying, IN password character varying)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
-- Проверка на минимальную длину пароля и наличие как минимум одной буквы и одной цифры
|
|
IF LENGTH(password) < 6 OR password !~ '[0-9]' OR password !~ '[a-zA-Z]' THEN
|
|
RAISE EXCEPTION 'Пароль должен быть длиной не менее 6 символов и содержать как минимум одну букву и одну цифру';
|
|
END IF;
|
|
|
|
-- Вставка пользователя, если логин уникален
|
|
BEGIN
|
|
INSERT INTO Users(login, password) VALUES (login, hashPassword(password));
|
|
EXCEPTION WHEN unique_violation THEN
|
|
RAISE EXCEPTION 'Такой логин уже занят';
|
|
END;
|
|
|
|
-- Вызов функции для входа пользователя
|
|
CALL login(login, password);
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE s314500.register(IN login character varying, IN password character varying) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 50991 (class 1255 OID 1217459)
|
|
-- Name: setready(integer, integer, boolean); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.setready(tk integer, lobbyid integer, state boolean) RETURNS text
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
userLogin VARCHAR(64);
|
|
userId INT;
|
|
BEGIN
|
|
-- Получаем логин по токену
|
|
SELECT login INTO userLogin FROM tokens WHERE token = tk;
|
|
IF userLogin IS NULL THEN
|
|
RETURN 'Невалидный токен';
|
|
END IF;
|
|
|
|
-- Получаем userId
|
|
SELECT id INTO userId FROM users WHERE login = userLogin;
|
|
|
|
-- Проверка, находится ли пользователь в лобби
|
|
IF NOT EXISTS (SELECT 1 FROM players WHERE user_id = userId AND lobby_id = lobbyId) THEN
|
|
RETURN 'Пользователь не в лобби';
|
|
END IF;
|
|
|
|
-- Обновление статуса готовности
|
|
UPDATE players
|
|
SET is_ready = state
|
|
WHERE user_id = userId AND lobby_id = lobbyId;
|
|
|
|
-- Возвращаем обновленную информацию о лобби
|
|
PERFORM getUsersInLobby(tk, lobbyId);
|
|
RETURN 'Готовность обновлена';
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.setready(tk integer, lobbyid integer, state boolean) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 51028 (class 1255 OID 1217451)
|
|
-- Name: showavailablegames(integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.showavailablegames(tk integer) RETURNS TABLE(id integer, usercount integer, haspassword boolean, hostlogin character varying)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
userLogin VARCHAR(64);
|
|
userId INT;
|
|
BEGIN
|
|
-- Получаем логин по токену
|
|
SELECT login INTO userLogin FROM Tokens WHERE token = tk;
|
|
IF userLogin IS NULL THEN
|
|
RAISE EXCEPTION 'Невалидный токен';
|
|
END IF;
|
|
|
|
-- Получаем userId
|
|
SELECT id INTO userId FROM Users WHERE login = userLogin;
|
|
|
|
-- Запрос
|
|
RETURN QUERY
|
|
SELECT p.lobby_id AS id,
|
|
COUNT(*) AS userCount,
|
|
CASE WHEN l.password IS NOT NULL THEN TRUE ELSE FALSE END AS hasPassword,
|
|
u.login AS hostLogin
|
|
FROM players p
|
|
LEFT JOIN players p2 ON p2.lobby_id = p.lobby_id AND p2.user_id = userId
|
|
INNER JOIN lobbies l ON p.lobby_id = l.id
|
|
LEFT JOIN users u ON l.host_id = u.id
|
|
WHERE p2.user_id IS NULL
|
|
GROUP BY p.lobby_id, l.password, u.login
|
|
HAVING COUNT(*) < 4;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.showavailablegames(tk integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 52005 (class 1255 OID 1217496)
|
|
-- Name: showuserinfo(integer); Type: PROCEDURE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE PROCEDURE s314500.showuserinfo(IN tk integer)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
userLogin VARCHAR(64);
|
|
BEGIN
|
|
-- Проверка на валидность токена
|
|
SELECT login INTO userLogin FROM Tokens WHERE token = tk;
|
|
|
|
IF userLogin IS NULL THEN
|
|
-- Если токен не найден
|
|
RAISE EXCEPTION 'Невалидный токен';
|
|
ELSE
|
|
-- Запрос информации о пользователе
|
|
PERFORM (SELECT login FROM Users WHERE login = userLogin);
|
|
END IF;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE s314500.showuserinfo(IN tk integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 50785 (class 1255 OID 1217499)
|
|
-- Name: showuserpl(); Type: PROCEDURE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE PROCEDURE s314500.showuserpl()
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
BEGIN
|
|
-- Запрос информации о всех пользователях
|
|
PERFORM (SELECT login FROM Users);
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE s314500.showuserpl() OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 54430 (class 1255 OID 1217462)
|
|
-- Name: startgame(integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.startgame(lobbyid integer) RETURNS text
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
currentHostId INT;
|
|
BEGIN
|
|
-- Получаем хоста лобби
|
|
SELECT host_id INTO currentHostId FROM lobbies WHERE id = lobbyId;
|
|
|
|
-- Проверка, что хост запускает игру
|
|
IF currentHostId != (SELECT id FROM users WHERE login = userLogin) THEN
|
|
RETURN 'Только хост может начать игру';
|
|
END IF;
|
|
|
|
-- Запуск игры
|
|
UPDATE lobbies SET state = 'inProgress' WHERE id = lobbyId;
|
|
|
|
RETURN 'Игра началась';
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.startgame(lobbyid integer) OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 51443 (class 1255 OID 1376881)
|
|
-- Name: type_of_card(integer); Type: FUNCTION; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE FUNCTION s314500.type_of_card(p_card integer) RETURNS integer
|
|
LANGUAGE plpgsql
|
|
AS $$DECLARE
|
|
|
|
out integer;
|
|
|
|
BEGIN
|
|
|
|
SELECT card_type_id FROM cards WHERE card_id = p_card
|
|
INTO out;
|
|
|
|
RETURN out;
|
|
|
|
END;$$;
|
|
|
|
|
|
ALTER FUNCTION s314500.type_of_card(p_card integer) OWNER TO s314500;
|
|
|
|
SET default_tablespace = '';
|
|
|
|
SET default_table_access_method = heap;
|
|
|
|
--
|
|
-- TOC entry 47333 (class 1259 OID 1217335)
|
|
-- Name: cards; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.cards (
|
|
card_id integer NOT NULL,
|
|
card_type_id integer NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.cards OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 47332 (class 1259 OID 1217334)
|
|
-- Name: cards_card_id_seq; Type: SEQUENCE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE SEQUENCE s314500.cards_card_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
ALTER SEQUENCE s314500.cards_card_id_seq OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 99952 (class 0 OID 0)
|
|
-- Dependencies: 47332
|
|
-- Name: cards_card_id_seq; Type: SEQUENCE OWNED BY; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER SEQUENCE s314500.cards_card_id_seq OWNED BY s314500.cards.card_id;
|
|
|
|
|
|
--
|
|
-- TOC entry 47336 (class 1259 OID 1217378)
|
|
-- Name: cards_in_deck; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.cards_in_deck (
|
|
card_id integer NOT NULL,
|
|
lobby_id integer NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.cards_in_deck OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 47334 (class 1259 OID 1217346)
|
|
-- Name: cards_in_hand; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.cards_in_hand (
|
|
card_id integer NOT NULL,
|
|
player_id integer NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.cards_in_hand OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 47335 (class 1259 OID 1217361)
|
|
-- Name: cards_on_table; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.cards_on_table (
|
|
card_id integer NOT NULL,
|
|
lobby_id integer NOT NULL,
|
|
x smallint NOT NULL,
|
|
y smallint NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.cards_on_table OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 49114 (class 1259 OID 1330823)
|
|
-- Name: cardstypes_id_seq; Type: SEQUENCE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE SEQUENCE s314500.cardstypes_id_seq
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
MAXVALUE 66
|
|
CACHE 1;
|
|
|
|
|
|
ALTER SEQUENCE s314500.cardstypes_id_seq OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 49115 (class 1259 OID 1330824)
|
|
-- Name: cards_types; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.cards_types (
|
|
id integer DEFAULT nextval('s314500.cardstypes_id_seq'::regclass) NOT NULL,
|
|
shape text,
|
|
number smallint,
|
|
color text,
|
|
CONSTRAINT cardstypes_color_check CHECK ((color = ANY (ARRAY['Blue'::text, 'Yellow'::text, 'Red'::text, 'Green'::text]))),
|
|
CONSTRAINT cardstypes_number_check CHECK ((number >= 0)),
|
|
CONSTRAINT cardstypes_shape_check CHECK ((shape = ANY (ARRAY['Square'::text, 'Triangle'::text, 'Circle'::text, 'Cross'::text])))
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.cards_types OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 47331 (class 1259 OID 1217310)
|
|
-- Name: current_turn; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.current_turn (
|
|
player_id integer NOT NULL,
|
|
start_time timestamp without time zone NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.current_turn OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 47327 (class 1259 OID 1217160)
|
|
-- Name: lobbies; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.lobbies (
|
|
id integer NOT NULL,
|
|
password character varying(10),
|
|
turn_time integer DEFAULT 30 NOT NULL,
|
|
host_id integer,
|
|
state character varying DEFAULT 'waiting'::character varying NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.lobbies OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 47326 (class 1259 OID 1217159)
|
|
-- Name: lobbies_id_seq; Type: SEQUENCE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE SEQUENCE s314500.lobbies_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
ALTER SEQUENCE s314500.lobbies_id_seq OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 99953 (class 0 OID 0)
|
|
-- Dependencies: 47326
|
|
-- Name: lobbies_id_seq; Type: SEQUENCE OWNED BY; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER SEQUENCE s314500.lobbies_id_seq OWNED BY s314500.lobbies.id;
|
|
|
|
|
|
--
|
|
-- TOC entry 47329 (class 1259 OID 1217276)
|
|
-- Name: players; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.players (
|
|
id integer NOT NULL,
|
|
lobby_id integer NOT NULL,
|
|
login character varying(20) NOT NULL,
|
|
nickname character varying(15) NOT NULL,
|
|
points integer DEFAULT 0 NOT NULL,
|
|
is_ready boolean DEFAULT false NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.players OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 47328 (class 1259 OID 1217275)
|
|
-- Name: players_id_seq; Type: SEQUENCE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE SEQUENCE s314500.players_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
ALTER SEQUENCE s314500.players_id_seq OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 99954 (class 0 OID 0)
|
|
-- Dependencies: 47328
|
|
-- Name: players_id_seq; Type: SEQUENCE OWNED BY; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER SEQUENCE s314500.players_id_seq OWNED BY s314500.players.id;
|
|
|
|
|
|
--
|
|
-- TOC entry 50294 (class 1259 OID 1376837)
|
|
-- Name: t_card_color; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.t_card_color (
|
|
id smallint NOT NULL,
|
|
name text NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.t_card_color OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 50296 (class 1259 OID 1376851)
|
|
-- Name: t_card_number; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.t_card_number (
|
|
id smallint NOT NULL,
|
|
number smallint NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.t_card_number OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 50295 (class 1259 OID 1376844)
|
|
-- Name: t_card_shape; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.t_card_shape (
|
|
id smallint NOT NULL,
|
|
name text NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.t_card_shape OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 50102 (class 1259 OID 1371608)
|
|
-- Name: test_table; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.test_table (
|
|
x integer NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.test_table OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 47337 (class 1259 OID 1217393)
|
|
-- Name: tokens; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.tokens (
|
|
login character varying(64) NOT NULL,
|
|
token bigint NOT NULL,
|
|
created timestamp without time zone DEFAULT now() NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.tokens OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 47325 (class 1259 OID 1217154)
|
|
-- Name: users; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.users (
|
|
login character varying(20) NOT NULL,
|
|
password character varying(50) NOT NULL,
|
|
id integer NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.users OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 47342 (class 1259 OID 1217480)
|
|
-- Name: users_id_seq; Type: SEQUENCE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE SEQUENCE s314500.users_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
ALTER SEQUENCE s314500.users_id_seq OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 99955 (class 0 OID 0)
|
|
-- Dependencies: 47342
|
|
-- Name: users_id_seq; Type: SEQUENCE OWNED BY; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER SEQUENCE s314500.users_id_seq OWNED BY s314500.users.id;
|
|
|
|
|
|
--
|
|
-- TOC entry 47330 (class 1259 OID 1217295)
|
|
-- Name: users_in_lobby; Type: TABLE; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
CREATE TABLE s314500.users_in_lobby (
|
|
lobby_id integer NOT NULL,
|
|
login character varying(20) NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE s314500.users_in_lobby OWNER TO s314500;
|
|
|
|
--
|
|
-- TOC entry 99550 (class 2604 OID 1217338)
|
|
-- Name: cards card_id; Type: DEFAULT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.cards ALTER COLUMN card_id SET DEFAULT nextval('s314500.cards_card_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- TOC entry 99544 (class 2604 OID 1217163)
|
|
-- Name: lobbies id; Type: DEFAULT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.lobbies ALTER COLUMN id SET DEFAULT nextval('s314500.lobbies_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- TOC entry 99547 (class 2604 OID 1217279)
|
|
-- Name: players id; Type: DEFAULT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.players ALTER COLUMN id SET DEFAULT nextval('s314500.players_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- TOC entry 99543 (class 2604 OID 1217481)
|
|
-- Name: users id; Type: DEFAULT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.users ALTER COLUMN id SET DEFAULT nextval('s314500.users_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- TOC entry 99935 (class 0 OID 1217335)
|
|
-- Dependencies: 47333
|
|
-- Data for Name: cards; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.cards (card_id, card_type_id) FROM stdin;
|
|
1 1
|
|
2 2
|
|
3 3
|
|
4 4
|
|
5 5
|
|
6 6
|
|
7 7
|
|
8 8
|
|
9 9
|
|
10 10
|
|
11 11
|
|
12 12
|
|
13 13
|
|
14 14
|
|
15 15
|
|
16 16
|
|
17 17
|
|
18 18
|
|
19 19
|
|
20 20
|
|
21 21
|
|
22 22
|
|
23 23
|
|
24 24
|
|
25 25
|
|
26 26
|
|
27 27
|
|
28 28
|
|
29 29
|
|
30 30
|
|
31 31
|
|
32 32
|
|
33 33
|
|
34 34
|
|
35 35
|
|
36 36
|
|
37 37
|
|
38 38
|
|
39 39
|
|
40 40
|
|
41 41
|
|
42 42
|
|
43 43
|
|
44 44
|
|
45 45
|
|
46 46
|
|
47 47
|
|
48 48
|
|
49 49
|
|
50 50
|
|
51 51
|
|
52 52
|
|
53 53
|
|
54 54
|
|
55 55
|
|
56 56
|
|
57 57
|
|
58 58
|
|
59 59
|
|
60 60
|
|
61 61
|
|
62 62
|
|
63 63
|
|
64 64
|
|
65 65
|
|
66 66
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99938 (class 0 OID 1217378)
|
|
-- Dependencies: 47336
|
|
-- Data for Name: cards_in_deck; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.cards_in_deck (card_id, lobby_id) FROM stdin;
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99936 (class 0 OID 1217346)
|
|
-- Dependencies: 47334
|
|
-- Data for Name: cards_in_hand; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.cards_in_hand (card_id, player_id) FROM stdin;
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99937 (class 0 OID 1217361)
|
|
-- Dependencies: 47335
|
|
-- Data for Name: cards_on_table; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.cards_on_table (card_id, lobby_id, x, y) FROM stdin;
|
|
1 1 0 0
|
|
2 1 1 0
|
|
3 1 2 0
|
|
4 1 3 0
|
|
5 1 2 1
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99942 (class 0 OID 1330824)
|
|
-- Dependencies: 49115
|
|
-- Data for Name: cards_types; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.cards_types (id, shape, number, color) FROM stdin;
|
|
1 Square 1 Blue
|
|
2 Square 1 Yellow
|
|
3 Square 1 Red
|
|
4 Square 1 Green
|
|
5 Square 2 Blue
|
|
6 Square 2 Yellow
|
|
7 Square 2 Red
|
|
8 Square 2 Green
|
|
9 Square 3 Blue
|
|
10 Square 3 Yellow
|
|
11 Square 3 Red
|
|
12 Square 3 Green
|
|
13 Square 4 Blue
|
|
14 Square 4 Yellow
|
|
15 Square 4 Red
|
|
16 Square 4 Green
|
|
17 Triangle 1 Blue
|
|
18 Triangle 1 Yellow
|
|
19 Triangle 1 Red
|
|
20 Triangle 1 Green
|
|
21 Triangle 2 Blue
|
|
22 Triangle 2 Yellow
|
|
23 Triangle 2 Red
|
|
24 Triangle 2 Green
|
|
25 Triangle 3 Blue
|
|
26 Triangle 3 Yellow
|
|
27 Triangle 3 Red
|
|
28 Triangle 3 Green
|
|
29 Triangle 4 Blue
|
|
30 Triangle 4 Yellow
|
|
31 Triangle 4 Red
|
|
32 Triangle 4 Green
|
|
33 Circle 1 Blue
|
|
34 Circle 1 Yellow
|
|
35 Circle 1 Red
|
|
36 Circle 1 Green
|
|
37 Circle 2 Blue
|
|
38 Circle 2 Yellow
|
|
39 Circle 2 Red
|
|
40 Circle 2 Green
|
|
41 Circle 3 Blue
|
|
42 Circle 3 Yellow
|
|
43 Circle 3 Red
|
|
44 Circle 3 Green
|
|
45 Circle 4 Blue
|
|
46 Circle 4 Yellow
|
|
47 Circle 4 Red
|
|
48 Circle 4 Green
|
|
49 Cross 1 Blue
|
|
50 Cross 1 Yellow
|
|
51 Cross 1 Red
|
|
52 Cross 1 Green
|
|
53 Cross 2 Blue
|
|
54 Cross 2 Yellow
|
|
55 Cross 2 Red
|
|
56 Cross 2 Green
|
|
57 Cross 3 Blue
|
|
58 Cross 3 Yellow
|
|
59 Cross 3 Red
|
|
60 Cross 3 Green
|
|
61 Cross 4 Blue
|
|
62 Cross 4 Yellow
|
|
63 Cross 4 Red
|
|
64 Cross 4 Green
|
|
65 \N \N \N
|
|
66 \N \N \N
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99933 (class 0 OID 1217310)
|
|
-- Dependencies: 47331
|
|
-- Data for Name: current_turn; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.current_turn (player_id, start_time) FROM stdin;
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99929 (class 0 OID 1217160)
|
|
-- Dependencies: 47327
|
|
-- Data for Name: lobbies; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.lobbies (id, password, turn_time, host_id, state) FROM stdin;
|
|
1 12345678 60 \N waiting
|
|
11 qwerty 60 8 Start
|
|
17 qwerty 60 8 Start
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99931 (class 0 OID 1217276)
|
|
-- Dependencies: 47329
|
|
-- Data for Name: players; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.players (id, lobby_id, login, nickname, points, is_ready) FROM stdin;
|
|
8 11 TestUser Tester 0 t
|
|
1 17 TestUser Tester 0 t
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99944 (class 0 OID 1376837)
|
|
-- Dependencies: 50294
|
|
-- Data for Name: t_card_color; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.t_card_color (id, name) FROM stdin;
|
|
1 Yellow
|
|
2 Green
|
|
3 Red
|
|
4 Blue
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99946 (class 0 OID 1376851)
|
|
-- Dependencies: 50296
|
|
-- Data for Name: t_card_number; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.t_card_number (id, number) FROM stdin;
|
|
1 1
|
|
2 2
|
|
3 3
|
|
4 4
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99945 (class 0 OID 1376844)
|
|
-- Dependencies: 50295
|
|
-- Data for Name: t_card_shape; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.t_card_shape (id, name) FROM stdin;
|
|
1 Circle
|
|
2 Triangle
|
|
3 Square
|
|
4 Cross
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99943 (class 0 OID 1371608)
|
|
-- Dependencies: 50102
|
|
-- Data for Name: test_table; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.test_table (x) FROM stdin;
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
6
|
|
8
|
|
9
|
|
12
|
|
13
|
|
14
|
|
21
|
|
22
|
|
23
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99939 (class 0 OID 1217393)
|
|
-- Dependencies: 47337
|
|
-- Data for Name: tokens; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.tokens (login, token, created) FROM stdin;
|
|
TestUser 1076758434 2025-03-16 22:53:09.790649
|
|
TestUser2 357352692 2025-03-16 22:54:17.350104
|
|
TestUser3 466720616 2025-03-16 22:57:47.070035
|
|
TestUser4 1154052900 2025-03-16 23:06:17.176119
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99927 (class 0 OID 1217154)
|
|
-- Dependencies: 47325
|
|
-- Data for Name: users; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.users (login, password, id) FROM stdin;
|
|
vasya 7661733132336d65676173616c74 5
|
|
TestUser 7177657274793132336d65676173616c74 8
|
|
TestUser2 7177657274793132336d65676173616c74 13
|
|
TestUser3 7177657274793132336d65676173616c74 21
|
|
TestUser4 717765727479313233346d65676173616c74 42
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99932 (class 0 OID 1217295)
|
|
-- Dependencies: 47330
|
|
-- Data for Name: users_in_lobby; Type: TABLE DATA; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
COPY s314500.users_in_lobby (lobby_id, login) FROM stdin;
|
|
\.
|
|
|
|
|
|
--
|
|
-- TOC entry 99956 (class 0 OID 0)
|
|
-- Dependencies: 47332
|
|
-- Name: cards_card_id_seq; Type: SEQUENCE SET; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
SELECT pg_catalog.setval('s314500.cards_card_id_seq', 1, false);
|
|
|
|
|
|
--
|
|
-- TOC entry 99957 (class 0 OID 0)
|
|
-- Dependencies: 49114
|
|
-- Name: cardstypes_id_seq; Type: SEQUENCE SET; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
SELECT pg_catalog.setval('s314500.cardstypes_id_seq', 1, false);
|
|
|
|
|
|
--
|
|
-- TOC entry 99958 (class 0 OID 0)
|
|
-- Dependencies: 47326
|
|
-- Name: lobbies_id_seq; Type: SEQUENCE SET; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
SELECT pg_catalog.setval('s314500.lobbies_id_seq', 19, true);
|
|
|
|
|
|
--
|
|
-- TOC entry 99959 (class 0 OID 0)
|
|
-- Dependencies: 47328
|
|
-- Name: players_id_seq; Type: SEQUENCE SET; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
SELECT pg_catalog.setval('s314500.players_id_seq', 3, true);
|
|
|
|
|
|
--
|
|
-- TOC entry 99960 (class 0 OID 0)
|
|
-- Dependencies: 47342
|
|
-- Name: users_id_seq; Type: SEQUENCE SET; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
SELECT pg_catalog.setval('s314500.users_id_seq', 42, true);
|
|
|
|
|
|
--
|
|
-- TOC entry 99569 (class 2606 OID 1217340)
|
|
-- Name: cards cards_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.cards
|
|
ADD CONSTRAINT cards_pkey PRIMARY KEY (card_id);
|
|
|
|
|
|
--
|
|
-- TOC entry 99577 (class 2606 OID 1217382)
|
|
-- Name: cards_in_deck cardsindeck_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.cards_in_deck
|
|
ADD CONSTRAINT cardsindeck_pkey PRIMARY KEY (card_id);
|
|
|
|
|
|
--
|
|
-- TOC entry 99571 (class 2606 OID 1217350)
|
|
-- Name: cards_in_hand cardsinhand_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.cards_in_hand
|
|
ADD CONSTRAINT cardsinhand_pkey PRIMARY KEY (card_id);
|
|
|
|
|
|
--
|
|
-- TOC entry 99573 (class 2606 OID 1217365)
|
|
-- Name: cards_on_table cardsontable_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.cards_on_table
|
|
ADD CONSTRAINT cardsontable_pkey PRIMARY KEY (card_id);
|
|
|
|
|
|
--
|
|
-- TOC entry 99581 (class 2606 OID 1330834)
|
|
-- Name: cards_types cardstypes_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.cards_types
|
|
ADD CONSTRAINT cardstypes_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- TOC entry 99567 (class 2606 OID 1217314)
|
|
-- Name: current_turn currentturn_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.current_turn
|
|
ADD CONSTRAINT currentturn_pkey PRIMARY KEY (player_id);
|
|
|
|
|
|
--
|
|
-- TOC entry 99559 (class 2606 OID 1217166)
|
|
-- Name: lobbies lobbies_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.lobbies
|
|
ADD CONSTRAINT lobbies_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- TOC entry 99561 (class 2606 OID 1217282)
|
|
-- Name: players players_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.players
|
|
ADD CONSTRAINT players_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- TOC entry 99587 (class 2606 OID 1376843)
|
|
-- Name: t_card_color t_card_color_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.t_card_color
|
|
ADD CONSTRAINT t_card_color_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- TOC entry 99591 (class 2606 OID 1376855)
|
|
-- Name: t_card_number t_card_number_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.t_card_number
|
|
ADD CONSTRAINT t_card_number_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- TOC entry 99589 (class 2606 OID 1376850)
|
|
-- Name: t_card_shape t_card_shape_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.t_card_shape
|
|
ADD CONSTRAINT t_card_shape_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- TOC entry 99585 (class 2606 OID 1371612)
|
|
-- Name: test_table test_table_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.test_table
|
|
ADD CONSTRAINT test_table_pkey PRIMARY KEY (x);
|
|
|
|
|
|
--
|
|
-- TOC entry 99579 (class 2606 OID 1217487)
|
|
-- Name: tokens tokens_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.tokens
|
|
ADD CONSTRAINT tokens_pkey PRIMARY KEY (token);
|
|
|
|
|
|
--
|
|
-- TOC entry 99575 (class 2606 OID 1217367)
|
|
-- Name: cards_on_table unique_lobby_xy; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.cards_on_table
|
|
ADD CONSTRAINT unique_lobby_xy UNIQUE (lobby_id, x, y);
|
|
|
|
|
|
--
|
|
-- TOC entry 99563 (class 2606 OID 1217284)
|
|
-- Name: players unique_login_lobby; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.players
|
|
ADD CONSTRAINT unique_login_lobby UNIQUE (login, lobby_id);
|
|
|
|
|
|
--
|
|
-- TOC entry 99583 (class 2606 OID 1330836)
|
|
-- Name: cards_types unique_shape_number_color; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.cards_types
|
|
ADD CONSTRAINT unique_shape_number_color UNIQUE (shape, number, color);
|
|
|
|
|
|
--
|
|
-- TOC entry 99557 (class 2606 OID 1217158)
|
|
-- Name: users users_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.users
|
|
ADD CONSTRAINT users_pkey PRIMARY KEY (login);
|
|
|
|
|
|
--
|
|
-- TOC entry 99565 (class 2606 OID 1217299)
|
|
-- Name: users_in_lobby usersinlobby_pkey; Type: CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.users_in_lobby
|
|
ADD CONSTRAINT usersinlobby_pkey PRIMARY KEY (lobby_id, login);
|
|
|
|
|
|
--
|
|
-- TOC entry 99601 (class 2606 OID 1217383)
|
|
-- Name: cards_in_deck cardsindeck_card_id_fkey; Type: FK CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.cards_in_deck
|
|
ADD CONSTRAINT cardsindeck_card_id_fkey FOREIGN KEY (card_id) REFERENCES s314500.cards(card_id) ON DELETE RESTRICT;
|
|
|
|
|
|
--
|
|
-- TOC entry 99602 (class 2606 OID 1217388)
|
|
-- Name: cards_in_deck cardsindeck_lobby_id_fkey; Type: FK CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.cards_in_deck
|
|
ADD CONSTRAINT cardsindeck_lobby_id_fkey FOREIGN KEY (lobby_id) REFERENCES s314500.lobbies(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 99597 (class 2606 OID 1217351)
|
|
-- Name: cards_in_hand cardsinhand_card_id_fkey; Type: FK CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.cards_in_hand
|
|
ADD CONSTRAINT cardsinhand_card_id_fkey FOREIGN KEY (card_id) REFERENCES s314500.cards(card_id) ON DELETE RESTRICT;
|
|
|
|
|
|
--
|
|
-- TOC entry 99598 (class 2606 OID 1217356)
|
|
-- Name: cards_in_hand cardsinhand_player_id_fkey; Type: FK CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.cards_in_hand
|
|
ADD CONSTRAINT cardsinhand_player_id_fkey FOREIGN KEY (player_id) REFERENCES s314500.players(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 99599 (class 2606 OID 1217368)
|
|
-- Name: cards_on_table cardsontable_card_id_fkey; Type: FK CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.cards_on_table
|
|
ADD CONSTRAINT cardsontable_card_id_fkey FOREIGN KEY (card_id) REFERENCES s314500.cards(card_id) ON DELETE RESTRICT;
|
|
|
|
|
|
--
|
|
-- TOC entry 99600 (class 2606 OID 1217373)
|
|
-- Name: cards_on_table cardsontable_lobby_id_fkey; Type: FK CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.cards_on_table
|
|
ADD CONSTRAINT cardsontable_lobby_id_fkey FOREIGN KEY (lobby_id) REFERENCES s314500.lobbies(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 99596 (class 2606 OID 1217315)
|
|
-- Name: current_turn currentturn_player_id_fkey; Type: FK CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.current_turn
|
|
ADD CONSTRAINT currentturn_player_id_fkey FOREIGN KEY (player_id) REFERENCES s314500.players(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 99592 (class 2606 OID 1217290)
|
|
-- Name: players players_lobby_id_fkey; Type: FK CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.players
|
|
ADD CONSTRAINT players_lobby_id_fkey FOREIGN KEY (lobby_id) REFERENCES s314500.lobbies(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 99593 (class 2606 OID 1217285)
|
|
-- Name: players players_login_fkey; Type: FK CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.players
|
|
ADD CONSTRAINT players_login_fkey FOREIGN KEY (login) REFERENCES s314500.users(login) ON DELETE RESTRICT;
|
|
|
|
|
|
--
|
|
-- TOC entry 99603 (class 2606 OID 1217399)
|
|
-- Name: tokens tokens_login_fkey; Type: FK CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.tokens
|
|
ADD CONSTRAINT tokens_login_fkey FOREIGN KEY (login) REFERENCES s314500.users(login) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 99594 (class 2606 OID 1217300)
|
|
-- Name: users_in_lobby usersinlobby_lobby_id_fkey; Type: FK CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.users_in_lobby
|
|
ADD CONSTRAINT usersinlobby_lobby_id_fkey FOREIGN KEY (lobby_id) REFERENCES s314500.lobbies(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 99595 (class 2606 OID 1217305)
|
|
-- Name: users_in_lobby usersinlobby_login_fkey; Type: FK CONSTRAINT; Schema: s314500; Owner: s314500
|
|
--
|
|
|
|
ALTER TABLE ONLY s314500.users_in_lobby
|
|
ADD CONSTRAINT usersinlobby_login_fkey FOREIGN KEY (login) REFERENCES s314500.users(login) ON DELETE CASCADE;
|
|
|
|
|
|
-- Completed on 2025-03-18 01:12:42
|
|
|
|
--
|
|
-- PostgreSQL database dump complete
|
|
--
|
|
|