Awesome Caderno Sql
psql에서 실행되는 텍스트 기반 RPG로, 게임 규칙이 PostgreSQL 트리거와 plpgsql 함수로 구현되어 있습니다.
psql을 위한 텍스트 RPG로, 플레이어가 INSERT로 캐릭터를 생성하면 트리거가 인트로를 서술합니다. 게임 규칙은 plpgsql로 작성되어 있고 스키마는 Flyway 마이그레이션으로 버전 관리됩니다.
개요
이 게임은 플레이어가 psql에서 사용하는 PostgreSQL 스키마입니다. 플레이어의 SQL 문이 이야기를 진행시키고, 데이터베이스는 notice로 응답합니다.
요구 사항
- 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은 localhost 포트 5433에서 Postgres 컨테이너를 시작합니다.
- make migrate는 Flyway를 디버그 모드로 실행하여 대기 중인 마이그레이션을 적용합니다.
- make down은 컨테이너를 제거하고 데이터는 유지합니다.
- make wipe는 컨테이너와 데이터 볼륨을 제거합니다.
프로젝트 구조
- migrations는 버전 관리되는 SQL을 담고 있으며, 각 파일은 게임의 한 부분에 대한 테이블, 타입, 함수를 포함합니다. 파일 이름은 V1__races.sql처럼 어떤 부분인지 나타냅니다.
- scripts는 make 타겟 뒤에 있는 셸 헬퍼를 담고 있습니다.
- flyway.conf는 로컬 데이터베이스를 위한 Flyway 연결 설정을 담고 있습니다.
목적
이 프로젝트는 PostgreSQL을 연습하는 방법입니다. 트리거, 이벤트 트리거, 역할과 권한, 열거형, 복합 타입, 집합 반환 함수를 사용합니다.
라이선스
코드는 Apache License 2.0에 따라 라이선스되며, LICENSE 파일에 전문이 있습니다. 해당 라이선스는 코드만을 대상으로 합니다.
이야기는 별개의 저작물입니다. 이는 Nexus의 세계, 그 국가들, 캐릭터, 역사와 설화, 그리고 출력되는 메시지와 진영 설명 같은 게임 내 모든 서사 텍스트를 의미합니다. 이야기는 Copyright (c) 2014-2026 lyszt, all rights reserved입니다. 읽고 게임을 플레이할 수는 있지만, 서면 허가 없이 이야기를 복제, 각색, 출판할 수 없습니다. NOTICE 파일은 코드를 재배포하는 사람을 위해 이 규칙을 다시 명시합니다.
