Awesome Caderno Sql
PLpgSQL

Awesome Caderno Sql

Un juego de rol de texto que se juega desde psql, con las reglas del juego implementadas como disparadores de PostgreSQL y funciones de plpgsql.

GitHub|

Un RPG de texto para psql donde los jugadores crean un personaje con un INSERT y un trigger narra la introducción. Las reglas del juego están escritas en plpgsql y el esquema está versionado con migraciones de Flyway.

Descripción general

El juego es un esquema de PostgreSQL que los jugadores usan desde psql. Sus sentencias SQL avanzan la historia, y la base de datos responde con avisos.

Requisitos

  • Docker
  • psql
  • make

Inicio rápido

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

Luego los jugadores leen las razas y clases disponibles e insertan un personaje.

SELECT * FROM races;
SELECT * FROM classes;

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

Los jugadores que quieran un personaje listo pueden copiar uno de las plantillas. La función use_template toma un id de plantilla e inserta ese personaje en character_info.

SELECT * FROM char_templates;
SELECT use_template(1);

Comandos

  • make up inicia el contenedor de Postgres en el puerto 5433 de localhost.
  • make migrate aplica las migraciones pendientes con Flyway en modo debug.
  • make down elimina el contenedor y conserva los datos.
  • make wipe elimina el contenedor y el volumen de datos.

Estructura del proyecto

  • migrations contiene el SQL versionado, y cada archivo contiene las tablas, tipos y funciones de una parte del juego. El nombre del archivo indica qué parte, como V1__races.sql.
  • scripts contiene los ayudantes de shell detrás de los objetivos de make.
  • flyway.conf contiene la configuración de conexión de Flyway para la base de datos local.

Propósito

El proyecto es una forma de practicar PostgreSQL. Usa triggers, event triggers, roles y permisos, enums, tipos compuestos y funciones que devuelven conjuntos.

Licencia

El código está licenciado bajo la Apache License 2.0, y el archivo LICENSE contiene el texto completo. Esa licencia cubre el código y nada más.

La historia es una obra separada. Esto significa el mundo de Nexus, sus naciones, personajes, historia y lore, y todo el texto narrativo del juego, como los mensajes impresos y las descripciones de facciones. La historia es Copyright (c) 2014-2026 lyszt, todos los derechos reservados. Puedes leerla y jugar el juego, pero no puedes copiar, adaptar ni publicar la historia sin permiso por escrito. El archivo NOTICE repite esta regla para cualquiera que redistribuya el código.