Files
builazoo/server/schema.sql
Nicolas Cantu e031c9a1d2 Initial commit
**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
2026-03-03 22:24:17 +01:00

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;