Awesome Caderno Sql
PLpgSQL

Awesome Caderno Sql

Un gioco di ruolo testuale giocabile da psql, con le regole di gioco implementate come trigger PostgreSQL e funzioni plpgsql.

GitHub|

Un text RPG per psql in cui i giocatori creano un personaggio con un INSERT e un trigger narra l'introduzione. Le regole del gioco sono scritte in plpgsql e lo schema è versionato con le migrazioni Flyway.

Panoramica

Il gioco è uno schema PostgreSQL che i giocatori usano da psql. Le loro istruzioni SQL fanno avanzare la storia, e il database risponde con delle notice.

Requisiti

  • Docker
  • psql
  • make

Avvio rapido

make setup   # starts Postgres 17 and runs the Flyway migrations
make run     # opens psql as the rpg user

I giocatori poi leggono le razze e le classi disponibili e inseriscono un personaggio.

SELECT * FROM races;
SELECT * FROM classes;

INSERT INTO character_info (name, description, class, race, gender)
VALUES ('Aria', 'Uma maga curiosa', 2, 1, 'feminino');

I giocatori che vogliono un personaggio pronto possono copiarne uno dai template. La funzione use_template prende un id di template e inserisce quel personaggio in character_info.

SELECT * FROM char_templates;
SELECT use_template(1);

Comandi

  • make up avvia il container Postgres sulla porta localhost 5433.
  • make migrate applica le migrazioni in sospeso con Flyway in modalità debug.
  • make down rimuove il container e conserva i dati.
  • make wipe rimuove il container e il volume dei dati.

Struttura del progetto

  • migrations contiene l'SQL versionato, e ogni file contiene le tabelle, i tipi e le funzioni per una parte del gioco. Il nome del file indica quale parte, come V1__races.sql.
  • scripts contiene gli helper shell dietro i target make.
  • flyway.conf contiene le impostazioni di connessione Flyway per il database locale.

Scopo

Il progetto è un modo per esercitarsi con PostgreSQL. Utilizza trigger, event trigger, ruoli e permessi, enum, tipi compositi e funzioni che restituiscono insiemi.

Licenza

Il codice è concesso in licenza sotto la Apache License 2.0, e il file LICENSE ne contiene il testo completo. Quella licenza copre il codice e nient'altro.

La storia è un'opera separata. Questo significa il mondo di Nexus, le sue nazioni, personaggi, storia e lore, e tutto il testo narrativo nel gioco come i messaggi stampati e le descrizioni delle fazioni. La storia è Copyright (c) 2014-2026 lyszt, tutti i diritti riservati. Puoi leggerla e giocare al gioco, ma non puoi copiare, adattare o pubblicare la storia senza permesso scritto. Il file NOTICE ripete questa regola per chiunque ridistribuisca il codice.