Awesome Caderno Sql
PLpgSQL

Awesome Caderno Sql

Um RPG de texto jogado no psql, com as regras do jogo implementadas como gatilhos do PostgreSQL e funções do plpgsql.

GitHub|

Um RPG de texto para psql onde os jogadores criam um personagem com um INSERT e um trigger narra a introdução. As regras do jogo são escritas em plpgsql e o schema é versionado com migrações Flyway.

Visão geral

O jogo é um schema PostgreSQL que os jogadores usam a partir do psql. Suas instruções SQL avançam a história, e o banco de dados responde com avisos.

Requisitos

  • Docker
  • psql
  • make

Início rápido

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

Os jogadores então leem as raças e classes disponíveis e inserem um personagem.

SELECT * FROM races;
SELECT * FROM classes;

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

Jogadores que querem um personagem pronto podem copiar um dos templates. A função use_template recebe um id de template e insere esse personagem em character_info.

SELECT * FROM char_templates;
SELECT use_template(1);

Comandos

  • make up inicia o contêiner Postgres na porta 5433 do localhost.
  • make migrate aplica as migrações pendentes com o Flyway em modo debug.
  • make down remove o contêiner e mantém os dados.
  • make wipe remove o contêiner e o volume de dados.

Estrutura do projeto

  • migrations contém o SQL versionado, e cada arquivo contém as tabelas, tipos e funções de uma parte do jogo. O nome do arquivo diz qual parte, como V1__races.sql.
  • scripts contém os auxiliares de shell por trás dos alvos do make.
  • flyway.conf contém as configurações de conexão do Flyway para o banco de dados local.

Propósito

O projeto é uma forma de praticar PostgreSQL. Ele usa triggers, event triggers, roles e permissões, enums, tipos compostos e funções que retornam conjuntos.

Licença

O código é licenciado sob a Apache License 2.0, e o arquivo LICENSE contém o texto completo. Essa licença cobre o código e nada mais.

A história é uma obra separada. Isso significa o mundo de Nexus, suas nações, personagens, história e lore, e todo o texto narrativo do jogo, como as mensagens impressas e as descrições de facções. A história é Copyright (c) 2014-2026 lyszt, todos os direitos reservados. Você pode lê-la e jogar o jogo, mas não pode copiar, adaptar ou publicar a história sem permissão por escrito. O arquivo NOTICE repete essa regra para qualquer pessoa que redistribua o código.