Awesome Caderno Sql
PLpgSQL

Awesome Caderno Sql

Текстова рольова гра, що запускається з psql, правила якої реалізовано у вигляді тригерів PostgreSQL та функцій plpgsql.

GitHub|

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

Огляд

Гра — це схема PostgreSQL, яку гравці використовують із psql. Їхні SQL-запити просувають історію, а база даних відповідає повідомленнями.

Вимоги

  • 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 приймає ідентифікатор шаблону й вставляє цього персонажа в 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. Він використовує тригери, тригери подій, ролі та дозволи, переліки, складені типи та функції, що повертають набори.

Ліцензія

Код ліцензовано за Apache License 2.0, і файл LICENSE містить повний текст. Ця ліцензія поширюється на код і ні на що інше.

Історія є окремим твором. Це означає світ Nexus, його нації, персонажів, історію та лор, а також усі наративні тексти в грі, як-от надруковані повідомлення та описи фракцій. Історія є Copyright (c) 2014-2026 lyszt, усі права застережено. Ви можете читати її та грати в гру, але не можете копіювати, адаптувати чи публікувати історію без письмового дозволу. Файл NOTICE повторює це правило для всіх, хто розповсюджує код.