Awesome Caderno Sql
Текстовая ролевая игра, запускаемая из psql, в которой игровые правила реализованы в виде триггеров PostgreSQL и функций plpgsql.
Текстовая 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 повторяет это правило для всех, кто распространяет код.
