Awesome Caderno Sql
PLpgSQL

Awesome Caderno Sql

Tekstowa gra RPG uruchamiana z poziomu psql, w której zasady gry są zaimplementowane jako wyzwalacze PostgreSQL i funkcje plpgsql.

GitHub|

Tekstowa gra RPG dla psql, w której gracze tworzą postać za pomocą INSERT, a trigger opowiada wstęp. Zasady gry są napisane w plpgsql, a schemat jest wersjonowany za pomocą migracji Flyway.

Przegląd

Gra to schemat PostgreSQL, z którego gracze korzystają w psql. Ich instrukcje SQL rozwijają historię, a baza danych odpowiada komunikatami.

Wymagania

  • Docker
  • psql
  • make

Szybki start

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

Gracze następnie czytają dostępne rasy i klasy oraz wstawiają postać.

SELECT * FROM races;
SELECT * FROM classes;

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

Gracze, którzy chcą gotową postać, mogą skopiować jedną z szablonów. Funkcja use_template przyjmuje identyfikator szablonu i wstawia tę postać do character_info.

SELECT * FROM char_templates;
SELECT use_template(1);

Polecenia

  • make up uruchamia kontener Postgres na lokalnym porcie 5433.
  • make migrate stosuje oczekujące migracje za pomocą Flyway w trybie debugowania.
  • make down usuwa kontener i zachowuje dane.
  • make wipe usuwa kontener i wolumen danych.

Struktura projektu

  • migrations zawiera wersjonowany SQL, a każdy plik zawiera tabele, typy i funkcje dla jednej części gry. Nazwa pliku wskazuje, której części dotyczy, np. V1__races.sql.
  • scripts zawiera skrypty powłoki stojące za celami make.
  • flyway.conf zawiera ustawienia połączenia Flyway dla lokalnej bazy danych.

Cel

Projekt jest sposobem na ćwiczenie PostgreSQL. Wykorzystuje triggery, event triggery, role i uprawnienia, enumy, typy złożone oraz funkcje zwracające zbiory.

Licencja

Kod jest objęty licencją Apache License 2.0, a plik LICENSE zawiera pełny tekst. Licencja obejmuje kod i nic więcej.

Historia jest osobnym utworem. Oznacza to świat Nexus, jego narody, postacie, historię i lore oraz cały tekst narracyjny w grze, taki jak drukowane komunikaty i opisy frakcji. Historia jest Copyright (c) 2014-2026 lyszt, wszelkie prawa zastrzeżone. Możesz ją czytać i grać w grę, ale nie możesz kopiować, adaptować ani publikować historii bez pisemnej zgody. Plik NOTICE powtarza tę zasadę dla każdego, kto redystrybuuje kod.