Awesome Caderno Sql
PLpgSQL

Awesome Caderno Sql

Текстовая ролевая игра, запускаемая из psql, в которой игровые правила реализованы в виде триггеров PostgreSQL и функций plpgsql.

GitHub|

Текстовая RPG для psql, где игроки создают персонажа с помощью INSERT, а триггер рассказывает вступление. Правила игры написаны на plpgsql, а схема версионируется с помощью миграций Flyway.

Обзор

Игра представляет собой схему PostgreSQL, которую игроки используют из psql. Их SQL-запросы продвигают сюжет, а база данных отвечает через notices.

Требования

  • Docker
  • psql
  • make

Быстрый старт

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

Затем игроки читают доступные расы и классы и вставляют персонажа.

SELECT * FROM races;
SELECT * FROM classes;

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

Игроки, которые хотят готового персонажа, могут скопировать его из шаблонов. Функция use_template принимает id шаблона и вставляет этого персонажа в character_info.

SELECT * FROM char_templates;
SELECT use_template(1);

Команды

  • make up запускает контейнер Postgres на локальном порту 5433.
  • make migrate применяет ожидающие миграции с помощью Flyway в режиме отладки.
  • make down удаляет контейнер и сохраняет данные.
  • make wipe удаляет контейнер и том с данными.

Структура проекта

  • migrations содержит версионированный SQL, и каждый файл содержит таблицы, типы и функции для одной части игры. Имя файла указывает, для какой части он предназначен, например V1__races.sql.
  • scripts содержит shell-хелперы, стоящие за целями make.
  • flyway.conf содержит настройки подключения Flyway для локальной базы данных.

Назначение

Проект — это способ попрактиковаться в PostgreSQL. В нём используются триггеры, event-триггеры, роли и разрешения, перечисления, составные типы и функции, возвращающие множества.

Лицензия

Код лицензирован под Apache License 2.0, и файл LICENSE содержит полный текст. Эта лицензия распространяется на код и ни на что больше.

Сюжет является отдельным произведением. Это означает мир Nexus, его народы, персонажей, историю и лор, а также весь повествовательный текст в игре, такой как выводимые сообщения и описания фракций. Сюжет является Copyright (c) 2014-2026 lyszt, все права защищены. Вы можете читать его и играть в игру, но не можете копировать, адаптировать или публиковать сюжет без письменного разрешения. Файл NOTICE повторяет это правило для всех, кто распространяет код.