**Motivations:** - Initialisation du versionning git pour le projet **Root causes:** - N/A (Nouveau projet) **Correctifs:** - N/A **Evolutions:** - Structure initiale du projet - Ajout du .gitignore **Pages affectées:** - Tous les fichiers
37 lines
1.2 KiB
SQL
37 lines
1.2 KiB
SQL
-- Build a Zoo web: accounts and zoos
|
|
-- Run once against your PostgreSQL (e.g. psql -f server/schema.sql)
|
|
|
|
CREATE TABLE IF NOT EXISTS accounts (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
public_key TEXT UNIQUE NOT NULL,
|
|
pseudo TEXT UNIQUE NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
last_seen_at TIMESTAMPTZ
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS zoos (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
account_id UUID REFERENCES accounts(id) ON DELETE CASCADE,
|
|
name TEXT NOT NULL,
|
|
x NUMERIC NOT NULL,
|
|
y NUMERIC NOT NULL,
|
|
is_bot BOOLEAN NOT NULL DEFAULT false,
|
|
animal_weights JSONB NOT NULL DEFAULT '{}',
|
|
game_state JSONB,
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
UNIQUE(account_id) -- only one zoo per account; bots have account_id NULL
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS zoos_account_id ON zoos(account_id);
|
|
CREATE INDEX IF NOT EXISTS zoos_is_bot ON zoos(is_bot);
|
|
|
|
-- One row: map dimensions and min zoos for density
|
|
CREATE TABLE IF NOT EXISTS map_config (
|
|
key TEXT PRIMARY KEY,
|
|
value JSONB NOT NULL
|
|
);
|
|
|
|
INSERT INTO map_config (key, value) VALUES
|
|
('params', '{"mapWidth": 100, "mapHeight": 100, "minZoos": 5}')
|
|
ON CONFLICT (key) DO NOTHING;
|