From 4a7f7b80410d577b0278a4caf2d012c7255b7857 Mon Sep 17 00:00:00 2001 From: stratic-dev Date: Mon, 22 Jan 2024 20:06:40 +0000 Subject: [PATCH 1/7] Added docker and docker-compose --- Dockerfile | 14 +++++++++++ docker/docker-compose.yml | 49 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 Dockerfile create mode 100644 docker/docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..37015b19d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM golang:1.21-alpine3.19 + +ENV GO111MODULE=on + +WORKDIR /app/erupe + +COPY go.mod . +COPY go.sum . + +RUN go mod download + +COPY . . + +CMD [ "go", "run", "." ] \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 000000000..e7ff0e960 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,49 @@ +version: "3.9" +# 1. docker-compose up db pgadmin +# 2. Use pgadmin to restore db and also apply patch-schema +# 3. Configure the config.json example. in docker you can point to the service name for the database i.e db +# 4. In seperate terminal docker-compose up server +# 5. If all went well happy hunting! +services: + db: + image: postgres + environment: + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=password + - POSTGRES_DB=erupe + ports: + - "5432:5432" + pgadmin: + image: dpage/pgadmin4 + restart: always + environment: + PGADMIN_DEFAULT_EMAIL: test@test.com + PGADMIN_DEFAULT_PASSWORD: root + ports: + - "5050:80" + depends_on: + - db + server: + depends_on: + - db + # If using prebuilt container change paths and config + build: + context: ../ + volumes: + - ../config.json:/app/erupe/config.json + - ../bin:/app/erupe/bin + - ../savedata:/app/erupe/savedata + ports: + - "53312:53312" #Sign V1 + - "8080:8080" #Sign V2 + - "53310:53310" #Entrance + # Channels + - "54001:54001" + - "54002:54002" + - "54003:54003" + - "54004:54004" + - "54005:54005" + - "54006:54006" + - "54007:54007" + - "54008:54008" + From 76e62c6af29f103a0edc8b2a66b5c1d5c51f7605 Mon Sep 17 00:00:00 2001 From: stratic-dev Date: Mon, 22 Jan 2024 22:35:45 +0000 Subject: [PATCH 2/7] Added readme and comments to docker-compose --- docker/README.md | 64 +++++++++++++++++++++++++++++++++++++++ docker/docker-compose.yml | 6 ++-- 2 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 docker/README.md diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 000000000..11a5cb04a --- /dev/null +++ b/docker/README.md @@ -0,0 +1,64 @@ +# Docker for erupe + +## Building the container +Run the following from the route of the soruce folder. In this example we give it the tag of dev to seperate it from any other container verions. +```bash +docker build . -t erupe:dev +``` +## Running the container in isolation +This is just running the container. You can do volume mounts into the container for the `config.json` to tell it to communicate to a database. You will need to do this also for other folders such as `bin` and `savedata` +```bash +docker run erupe:dev +``` + +## Docker compose +Docker compose allows you to run multiple containers at once. The docker compose in this folder has 3 things set up. +- postgres +- pg admin (Admin interface to make db changes) +- erupe + +Before we get started you should make sure the database info matches whats in the docker compose file for the environment variables `POSTGRES_PASSWORD`,`POSTGRES_USER` and `POSTGRES_DB`. You can set the host to be the service name `db`. + +Here is a example of what you would put in the config.json if you was to leave the defaults. It is strongly recommended to change the password. +```txt +"Database": { + "Host": "db", + "Port": 5432, + "User": "postgres", + "Password": "password", + "Database": "erupe" + }, +``` + +### Running up the database for the first time +First we need to set up the database. This requires the schema and the patch schemas to be applied. This can be done by runnnig up both the db and pgadmin. + +1. Pull the remote images and build a container image for erupe +```bash +docker-compose pull +docker-compose build +``` +2. Run up pgadmin and login using the username and password provided in `PGADMIN_DEFAULT_EMAIL` and `PGADMIN_DEFAULT_PASSWORD` note you will need to set up a new connection to the database internally. You will use the same host, database, username and password as above. +```bash +docker-compose run db pgadmin -d +``` +3. Use pgadmin to restore the schema using the restore functionaltiy and they query tool for the patch-schemas. + +4. Now run up the server you should see the server start correctly now. +```bash +docker-compose run server -d +``` + +## Turning off the server safely +```bash +docker-compose stop +``` +## Turning on the server again +This boots the db pgadmin and the server in a detached state +```bash +docker-compose up -d +``` +if you want all the logs and you want it to be in an attached state +```bash +docker-compose up +``` diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index e7ff0e960..3503326db 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -8,6 +8,7 @@ services: db: image: postgres environment: + # (Make sure these match config.json) - POSTGRES_USER=postgres - POSTGRES_PASSWORD=password - POSTGRES_DB=erupe @@ -17,8 +18,8 @@ services: image: dpage/pgadmin4 restart: always environment: - PGADMIN_DEFAULT_EMAIL: test@test.com - PGADMIN_DEFAULT_PASSWORD: root + PGADMIN_DEFAULT_EMAIL: user@pgadmin.com + PGADMIN_DEFAULT_PASSWORD: password ports: - "5050:80" depends_on: @@ -34,6 +35,7 @@ services: - ../bin:/app/erupe/bin - ../savedata:/app/erupe/savedata ports: + # (Make sure these match config.json) - "53312:53312" #Sign V1 - "8080:8080" #Sign V2 - "53310:53310" #Entrance From 463ceba555a13e27af64029371021b6a5c44bbc7 Mon Sep 17 00:00:00 2001 From: stratic-dev Date: Mon, 22 Jan 2024 22:45:31 +0000 Subject: [PATCH 3/7] Added github action --- .github/workflows/docker.yml | 48 ++++++++++++++++++++++++++++++++++++ config.json | 4 +-- 2 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/docker.yml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 000000000..f49ec5d7c --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,48 @@ +name: Create and publish a Docker image + +# Configures this workflow to run every time a tag is created. +on: + push: + tags: + - '*' + +# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds. +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu. +jobs: + build-and-push-image: + runs-on: ubuntu-latest + # Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job. + permissions: + contents: read + packages: write + # + steps: + - name: Checkout repository + uses: actions/checkout@v4 + # Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here. + - name: Log in to the Container registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + # This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels. + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + # This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages. + # It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository. + # It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step. + - name: Build and push Docker image + uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file diff --git a/config.json b/config.json index c0247b9d3..d866c3855 100644 --- a/config.json +++ b/config.json @@ -157,10 +157,10 @@ {"Name": "EXRenewing", "Enabled": true} ], "Database": { - "Host": "localhost", + "Host": "db", "Port": 5432, "User": "postgres", - "Password": "", + "Password": "password", "Database": "erupe" }, "Sign": { From abe47445876c1ddcfa08756679af80d885e1195b Mon Sep 17 00:00:00 2001 From: stratic-dev Date: Wed, 24 Jan 2024 04:35:24 +0000 Subject: [PATCH 4/7] Added db init script. Combined all schemas under schemas. Persisted updates and init --- .gitignore | 3 +- docker/README.md | 34 +-- docker/docker-compose.yml | 32 ++- docker/init/setup.sh | 22 ++ schemas/9.1-init.sql | Bin 0 -> 64231 bytes .../bundled-schema}/DistributionDemo.sql | 0 .../bundled-schema}/DivaShops.sql | 0 .../bundled-schema}/EventQuests.sql | 0 .../bundled-schema}/FPointItems.sql | 0 .../bundled-schema}/FestaDefaults.sql | 0 .../bundled-schema}/GachaDemo.sql | 0 .../bundled-schema}/NetcafeDefaults.sql | 0 .../bundled-schema}/OtherShops.sql | 0 .../bundled-schema}/RoadShopItems.sql | 0 .../bundled-schema}/ScenarioDefaults.sql | 0 .../patch-schema}/.gitkeep | 0 .../patch-schema}/00-psn-id.sql | 0 .../patch-schema}/01-wiiu-key.sql | 0 .../patch-schema}/02-tower.sql | 0 .../patch-schema}/03-event_quests.sql | 0 .../patch-schema}/04-trend-weapons.sql | 0 .../patch-schema}/05-gacha-roll-name.sql | 0 .../patch-schema}/06-goocoo-rename.sql | 0 .../patch-schema}/07-scenarios-counter.sql | 0 .../patch-schema}/08-kill-counts.sql | 0 .../patch-schema}/09-fix-guild-treasure.sql | 0 .../patch-schema}/10-rework-distributions.sql | 0 .../patch-schema}/11-event-quest-flags.sql | 0 .../patch-schema}/12-event_quest_cycling.sql | 0 .../patch-schema}/13-festa-trial-votes.sql | 0 .../patch-schema}/14-fix-fpoint-trades.sql | 0 .../patch-schema}/15-reset-goocoos.sql | 0 .../16-discord-password-resets.sql | 0 .../patch-schema}/op-accounts.sql | 0 .../patch-schema}/psn-link.sql | 0 schemas/update-schema/9.2-update.sql | 241 ++++++++++++++++++ 36 files changed, 309 insertions(+), 23 deletions(-) create mode 100644 docker/init/setup.sh create mode 100644 schemas/9.1-init.sql rename {bundled-schema => schemas/bundled-schema}/DistributionDemo.sql (100%) rename {bundled-schema => schemas/bundled-schema}/DivaShops.sql (100%) rename {bundled-schema => schemas/bundled-schema}/EventQuests.sql (100%) rename {bundled-schema => schemas/bundled-schema}/FPointItems.sql (100%) rename {bundled-schema => schemas/bundled-schema}/FestaDefaults.sql (100%) rename {bundled-schema => schemas/bundled-schema}/GachaDemo.sql (100%) rename {bundled-schema => schemas/bundled-schema}/NetcafeDefaults.sql (100%) rename {bundled-schema => schemas/bundled-schema}/OtherShops.sql (100%) rename {bundled-schema => schemas/bundled-schema}/RoadShopItems.sql (100%) rename {bundled-schema => schemas/bundled-schema}/ScenarioDefaults.sql (100%) rename {patch-schema => schemas/patch-schema}/.gitkeep (100%) rename {patch-schema => schemas/patch-schema}/00-psn-id.sql (100%) rename {patch-schema => schemas/patch-schema}/01-wiiu-key.sql (100%) rename {patch-schema => schemas/patch-schema}/02-tower.sql (100%) rename {patch-schema => schemas/patch-schema}/03-event_quests.sql (100%) rename {patch-schema => schemas/patch-schema}/04-trend-weapons.sql (100%) rename {patch-schema => schemas/patch-schema}/05-gacha-roll-name.sql (100%) rename {patch-schema => schemas/patch-schema}/06-goocoo-rename.sql (100%) rename {patch-schema => schemas/patch-schema}/07-scenarios-counter.sql (100%) rename {patch-schema => schemas/patch-schema}/08-kill-counts.sql (100%) rename {patch-schema => schemas/patch-schema}/09-fix-guild-treasure.sql (100%) rename {patch-schema => schemas/patch-schema}/10-rework-distributions.sql (100%) rename {patch-schema => schemas/patch-schema}/11-event-quest-flags.sql (100%) rename {patch-schema => schemas/patch-schema}/12-event_quest_cycling.sql (100%) rename {patch-schema => schemas/patch-schema}/13-festa-trial-votes.sql (100%) rename {patch-schema => schemas/patch-schema}/14-fix-fpoint-trades.sql (100%) rename {patch-schema => schemas/patch-schema}/15-reset-goocoos.sql (100%) rename {patch-schema => schemas/patch-schema}/16-discord-password-resets.sql (100%) rename {patch-schema => schemas/patch-schema}/op-accounts.sql (100%) rename {patch-schema => schemas/patch-schema}/psn-link.sql (100%) create mode 100644 schemas/update-schema/9.2-update.sql diff --git a/.gitignore b/.gitignore index a36e91559..4101960d2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ vendor/ savedata/*/ *.exe *.lnk -*.bat \ No newline at end of file +*.bat +/docker/db-data \ No newline at end of file diff --git a/docker/README.md b/docker/README.md index 11a5cb04a..3f45a12c0 100644 --- a/docker/README.md +++ b/docker/README.md @@ -17,6 +17,8 @@ Docker compose allows you to run multiple containers at once. The docker compose - pg admin (Admin interface to make db changes) - erupe +We automatically populate the database to the latest version on start. If you you are updating you will need to apply the new schemas manually. + Before we get started you should make sure the database info matches whats in the docker compose file for the environment variables `POSTGRES_PASSWORD`,`POSTGRES_USER` and `POSTGRES_DB`. You can set the host to be the service name `db`. Here is a example of what you would put in the config.json if you was to leave the defaults. It is strongly recommended to change the password. @@ -30,29 +32,29 @@ Here is a example of what you would put in the config.json if you was to leave t }, ``` -### Running up the database for the first time -First we need to set up the database. This requires the schema and the patch schemas to be applied. This can be done by runnnig up both the db and pgadmin. +Place this file within ./docker/config.json + +You will need to do the same for your bins place these in ./docker/bin + +# Setting up the web hosted materials +Clone the Severs repo into ./docker/Severs + +Make sure your hosts are pointing to where this is hosted -1. Pull the remote images and build a container image for erupe -```bash -docker-compose pull -docker-compose build -``` -2. Run up pgadmin and login using the username and password provided in `PGADMIN_DEFAULT_EMAIL` and `PGADMIN_DEFAULT_PASSWORD` note you will need to set up a new connection to the database internally. You will use the same host, database, username and password as above. -```bash -docker-compose run db pgadmin -d -``` -3. Use pgadmin to restore the schema using the restore functionaltiy and they query tool for the patch-schemas. -4. Now run up the server you should see the server start correctly now. -```bash -docker-compose run server -d -``` ## Turning off the server safely ```bash docker-compose stop ``` + +## Turning off the server destructive +```bash +docker-compose down +``` +Make sure if you want to delete your data you delete the folders that persisted +- ./docker/savedata +- ./docker/db-data ## Turning on the server again This boots the db pgadmin and the server in a detached state ```bash diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 3503326db..a610836ee 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -14,6 +14,15 @@ services: - POSTGRES_DB=erupe ports: - "5432:5432" + volumes: + - ./db-data/:/var/lib/postgresql/data/ + - ../schemas/:/schemas/ + - ./init/setup.sh:/docker-entrypoint-initdb.d/setup.sh + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 5s + timeout: 5s + retries: 5 pgadmin: image: dpage/pgadmin4 restart: always @@ -23,17 +32,19 @@ services: ports: - "5050:80" depends_on: - - db + db: + condition: service_healthy server: depends_on: - - db + db: + condition: service_healthy # If using prebuilt container change paths and config build: context: ../ volumes: - - ../config.json:/app/erupe/config.json - - ../bin:/app/erupe/bin - - ../savedata:/app/erupe/savedata + - ./config.json:/app/erupe/config.json + - ./bin:/app/erupe/bin + - ./savedata:/app/erupe/savedata ports: # (Make sure these match config.json) - "53312:53312" #Sign V1 @@ -48,4 +59,13 @@ services: - "54006:54006" - "54007:54007" - "54008:54008" - + web: + image: httpd:latest + container_name: my-apache-app + ports: + - '80:80' + volumes: + - ./Servers:/usr/local/apache2/htdocs + depends_on: + db: + condition: service_healthy \ No newline at end of file diff --git a/docker/init/setup.sh b/docker/init/setup.sh new file mode 100644 index 000000000..d9fda8d59 --- /dev/null +++ b/docker/init/setup.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -e +echo "INIT!" +pg_restore --username="$POSTGRES_USER" --dbname="$POSTGRES_DB" --verbose /schemas/9.1-init.sql + + + +echo "Updating!" + +for file in /schemas/update-schema/* +do + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -1 -f $file +done + + + +echo "Patching!" + +for file in /schemas/patch-schema/* +do + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -1 -f $file +done \ No newline at end of file diff --git a/schemas/9.1-init.sql b/schemas/9.1-init.sql new file mode 100644 index 0000000000000000000000000000000000000000..3ae0ca127112d22ee882d7d7c9bfdebedf6362e4 GIT binary patch literal 64231 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 literal 0 HcmV?d00001 diff --git a/bundled-schema/DistributionDemo.sql b/schemas/bundled-schema/DistributionDemo.sql similarity index 100% rename from bundled-schema/DistributionDemo.sql rename to schemas/bundled-schema/DistributionDemo.sql diff --git a/bundled-schema/DivaShops.sql b/schemas/bundled-schema/DivaShops.sql similarity index 100% rename from bundled-schema/DivaShops.sql rename to schemas/bundled-schema/DivaShops.sql diff --git a/bundled-schema/EventQuests.sql b/schemas/bundled-schema/EventQuests.sql similarity index 100% rename from bundled-schema/EventQuests.sql rename to schemas/bundled-schema/EventQuests.sql diff --git a/bundled-schema/FPointItems.sql b/schemas/bundled-schema/FPointItems.sql similarity index 100% rename from bundled-schema/FPointItems.sql rename to schemas/bundled-schema/FPointItems.sql diff --git a/bundled-schema/FestaDefaults.sql b/schemas/bundled-schema/FestaDefaults.sql similarity index 100% rename from bundled-schema/FestaDefaults.sql rename to schemas/bundled-schema/FestaDefaults.sql diff --git a/bundled-schema/GachaDemo.sql b/schemas/bundled-schema/GachaDemo.sql similarity index 100% rename from bundled-schema/GachaDemo.sql rename to schemas/bundled-schema/GachaDemo.sql diff --git a/bundled-schema/NetcafeDefaults.sql b/schemas/bundled-schema/NetcafeDefaults.sql similarity index 100% rename from bundled-schema/NetcafeDefaults.sql rename to schemas/bundled-schema/NetcafeDefaults.sql diff --git a/bundled-schema/OtherShops.sql b/schemas/bundled-schema/OtherShops.sql similarity index 100% rename from bundled-schema/OtherShops.sql rename to schemas/bundled-schema/OtherShops.sql diff --git a/bundled-schema/RoadShopItems.sql b/schemas/bundled-schema/RoadShopItems.sql similarity index 100% rename from bundled-schema/RoadShopItems.sql rename to schemas/bundled-schema/RoadShopItems.sql diff --git a/bundled-schema/ScenarioDefaults.sql b/schemas/bundled-schema/ScenarioDefaults.sql similarity index 100% rename from bundled-schema/ScenarioDefaults.sql rename to schemas/bundled-schema/ScenarioDefaults.sql diff --git a/patch-schema/.gitkeep b/schemas/patch-schema/.gitkeep similarity index 100% rename from patch-schema/.gitkeep rename to schemas/patch-schema/.gitkeep diff --git a/patch-schema/00-psn-id.sql b/schemas/patch-schema/00-psn-id.sql similarity index 100% rename from patch-schema/00-psn-id.sql rename to schemas/patch-schema/00-psn-id.sql diff --git a/patch-schema/01-wiiu-key.sql b/schemas/patch-schema/01-wiiu-key.sql similarity index 100% rename from patch-schema/01-wiiu-key.sql rename to schemas/patch-schema/01-wiiu-key.sql diff --git a/patch-schema/02-tower.sql b/schemas/patch-schema/02-tower.sql similarity index 100% rename from patch-schema/02-tower.sql rename to schemas/patch-schema/02-tower.sql diff --git a/patch-schema/03-event_quests.sql b/schemas/patch-schema/03-event_quests.sql similarity index 100% rename from patch-schema/03-event_quests.sql rename to schemas/patch-schema/03-event_quests.sql diff --git a/patch-schema/04-trend-weapons.sql b/schemas/patch-schema/04-trend-weapons.sql similarity index 100% rename from patch-schema/04-trend-weapons.sql rename to schemas/patch-schema/04-trend-weapons.sql diff --git a/patch-schema/05-gacha-roll-name.sql b/schemas/patch-schema/05-gacha-roll-name.sql similarity index 100% rename from patch-schema/05-gacha-roll-name.sql rename to schemas/patch-schema/05-gacha-roll-name.sql diff --git a/patch-schema/06-goocoo-rename.sql b/schemas/patch-schema/06-goocoo-rename.sql similarity index 100% rename from patch-schema/06-goocoo-rename.sql rename to schemas/patch-schema/06-goocoo-rename.sql diff --git a/patch-schema/07-scenarios-counter.sql b/schemas/patch-schema/07-scenarios-counter.sql similarity index 100% rename from patch-schema/07-scenarios-counter.sql rename to schemas/patch-schema/07-scenarios-counter.sql diff --git a/patch-schema/08-kill-counts.sql b/schemas/patch-schema/08-kill-counts.sql similarity index 100% rename from patch-schema/08-kill-counts.sql rename to schemas/patch-schema/08-kill-counts.sql diff --git a/patch-schema/09-fix-guild-treasure.sql b/schemas/patch-schema/09-fix-guild-treasure.sql similarity index 100% rename from patch-schema/09-fix-guild-treasure.sql rename to schemas/patch-schema/09-fix-guild-treasure.sql diff --git a/patch-schema/10-rework-distributions.sql b/schemas/patch-schema/10-rework-distributions.sql similarity index 100% rename from patch-schema/10-rework-distributions.sql rename to schemas/patch-schema/10-rework-distributions.sql diff --git a/patch-schema/11-event-quest-flags.sql b/schemas/patch-schema/11-event-quest-flags.sql similarity index 100% rename from patch-schema/11-event-quest-flags.sql rename to schemas/patch-schema/11-event-quest-flags.sql diff --git a/patch-schema/12-event_quest_cycling.sql b/schemas/patch-schema/12-event_quest_cycling.sql similarity index 100% rename from patch-schema/12-event_quest_cycling.sql rename to schemas/patch-schema/12-event_quest_cycling.sql diff --git a/patch-schema/13-festa-trial-votes.sql b/schemas/patch-schema/13-festa-trial-votes.sql similarity index 100% rename from patch-schema/13-festa-trial-votes.sql rename to schemas/patch-schema/13-festa-trial-votes.sql diff --git a/patch-schema/14-fix-fpoint-trades.sql b/schemas/patch-schema/14-fix-fpoint-trades.sql similarity index 100% rename from patch-schema/14-fix-fpoint-trades.sql rename to schemas/patch-schema/14-fix-fpoint-trades.sql diff --git a/patch-schema/15-reset-goocoos.sql b/schemas/patch-schema/15-reset-goocoos.sql similarity index 100% rename from patch-schema/15-reset-goocoos.sql rename to schemas/patch-schema/15-reset-goocoos.sql diff --git a/patch-schema/16-discord-password-resets.sql b/schemas/patch-schema/16-discord-password-resets.sql similarity index 100% rename from patch-schema/16-discord-password-resets.sql rename to schemas/patch-schema/16-discord-password-resets.sql diff --git a/patch-schema/op-accounts.sql b/schemas/patch-schema/op-accounts.sql similarity index 100% rename from patch-schema/op-accounts.sql rename to schemas/patch-schema/op-accounts.sql diff --git a/patch-schema/psn-link.sql b/schemas/patch-schema/psn-link.sql similarity index 100% rename from patch-schema/psn-link.sql rename to schemas/patch-schema/psn-link.sql diff --git a/schemas/update-schema/9.2-update.sql b/schemas/update-schema/9.2-update.sql new file mode 100644 index 000000000..e7dbf699b --- /dev/null +++ b/schemas/update-schema/9.2-update.sql @@ -0,0 +1,241 @@ +BEGIN; + +DROP TABLE IF EXISTS public.fpoint_items; + +CREATE TABLE IF NOT EXISTS public.fpoint_items ( + id serial PRIMARY KEY, + item_type integer, + item_id integer, + quantity integer, + fpoints integer, + trade_type integer +); + +ALTER TABLE IF EXISTS public.characters ADD bonus_quests INT NOT NULL DEFAULT 0; + +ALTER TABLE IF EXISTS public.characters ADD daily_quests INT NOT NULL DEFAULT 0; + +ALTER TABLE IF EXISTS public.characters ADD promo_points INT NOT NULL DEFAULT 0; + +ALTER TABLE IF EXISTS public.guild_characters ADD rp_today INT DEFAULT 0; + +ALTER TABLE IF EXISTS public.guild_characters ADD rp_yesterday INT DEFAULT 0; + +UPDATE public.characters SET savemercenary = NULL; + +ALTER TABLE IF EXISTS public.characters ADD rasta_id INT; + +ALTER TABLE IF EXISTS public.characters ADD pact_id INT; + +ALTER TABLE IF EXISTS public.characters ADD stampcard INT NOT NULL DEFAULT 0; + +ALTER TABLE IF EXISTS public.characters DROP COLUMN IF EXISTS gacha_prem; + +ALTER TABLE IF EXISTS public.characters DROP COLUMN IF EXISTS gacha_trial; + +ALTER TABLE IF EXISTS public.characters DROP COLUMN IF EXISTS frontier_points; + +ALTER TABLE IF EXISTS public.users ADD IF NOT EXISTS gacha_premium INT; + +ALTER TABLE IF EXISTS public.users ADD IF NOT EXISTS gacha_trial INT; + +ALTER TABLE IF EXISTS public.users ADD IF NOT EXISTS frontier_points INT; + +DROP TABLE IF EXISTS public.gacha_shop; + +CREATE TABLE IF NOT EXISTS public.gacha_shop ( + id SERIAL PRIMARY KEY, + min_gr INTEGER, + min_hr INTEGER, + name TEXT, + url_banner TEXT, + url_feature TEXT, + url_thumbnail TEXT, + wide BOOLEAN, + recommended BOOLEAN, + gacha_type INTEGER, + hidden BOOLEAN +); + +DROP TABLE IF EXISTS public.gacha_shop_items; + +CREATE TABLE IF NOT EXISTS public.gacha_entries ( + id SERIAL PRIMARY KEY, + gacha_id INTEGER, + entry_type INTEGER, + item_type INTEGER, + item_number INTEGER, + item_quantity INTEGER, + weight INTEGER, + rarity INTEGER, + rolls INTEGER, + frontier_points INTEGER, + daily_limit INTEGER +); + +CREATE TABLE IF NOT EXISTS public.gacha_items ( + id SERIAL PRIMARY KEY, + entry_id INTEGER, + item_type INTEGER, + item_id INTEGER, + quantity INTEGER +); + +DROP TABLE IF EXISTS public.stepup_state; + +CREATE TABLE IF NOT EXISTS public.gacha_stepup ( + gacha_id INTEGER, + step INTEGER, + character_id INTEGER +); + +DROP TABLE IF EXISTS public.lucky_box_state; + +CREATE TABLE IF NOT EXISTS public.gacha_box ( + gacha_id INTEGER, + entry_id INTEGER, + character_id INTEGER +); + +DROP TABLE IF EXISTS public.login_boost_state; + +CREATE TABLE IF NOT EXISTS public.login_boost ( + char_id INTEGER, + week_req INTEGER, + expiration TIMESTAMP WITH TIME ZONE, + reset TIMESTAMP WITH TIME ZONE +); + +ALTER TABLE IF EXISTS public.characters ADD COLUMN mezfes BYTEA; + +ALTER TABLE IF EXISTS public.characters ALTER COLUMN daily_time TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.characters ALTER COLUMN guild_post_checked TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.characters ALTER COLUMN boost_time TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.characters ADD COLUMN IF NOT EXISTS cafe_reset TIMESTAMP WITHOUT TIME ZONE; + +ALTER TABLE IF EXISTS public.characters ALTER COLUMN cafe_reset TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.distribution ALTER COLUMN deadline TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.events ALTER COLUMN start_time TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.feature_weapon ALTER COLUMN start_time TYPE TIMESTAMP WITH TIME ZONE; + +CREATE TABLE IF NOT EXISTS public.feature_weapon +( + start_time TIMESTAMP WITH TIME ZONE NOT NULL, + featured INTEGER NOT NULL +); + +ALTER TABLE IF EXISTS public.guild_alliances ALTER COLUMN created_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.guild_applications ALTER COLUMN created_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.guild_characters ALTER COLUMN joined_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.guild_posts ALTER COLUMN created_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.characters ALTER COLUMN daily_time TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.guilds ALTER COLUMN created_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.mail ALTER COLUMN created_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.stamps ALTER COLUMN hl_next TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.stamps ALTER COLUMN ex_next TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.titles ALTER COLUMN unlocked_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.titles ALTER COLUMN updated_at TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.users ALTER COLUMN last_login TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.users ALTER COLUMN return_expires TYPE TIMESTAMP WITH TIME ZONE; + +ALTER TABLE IF EXISTS public.guild_meals DROP COLUMN IF EXISTS expires; + +ALTER TABLE IF EXISTS public.guild_meals ADD COLUMN IF NOT EXISTS created_at TIMESTAMP WITH TIME ZONE; + +DROP TABLE IF EXISTS public.account_ban; + +DROP TABLE IF EXISTS public.account_history; + +DROP TABLE IF EXISTS public.account_moderation; + +DROP TABLE IF EXISTS public.account_sub; + +DROP TABLE IF EXISTS public.history; + +DROP TABLE IF EXISTS public.questlists; + +DROP TABLE IF EXISTS public.schema_migrations; + +DROP TABLE IF EXISTS public.user_binaries; + +DROP PROCEDURE IF EXISTS raviinit; + +DROP PROCEDURE IF EXISTS ravireset; + +ALTER TABLE IF EXISTS public.normal_shop_items RENAME TO shop_items; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN shoptype TO shop_type; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN shopid TO shop_id; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN itemhash TO id; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN itemid TO item_id; + +ALTER TABLE IF EXISTS public.shop_items ALTER COLUMN points TYPE integer; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN points TO cost; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN tradequantity TO quantity; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN rankreqlow TO min_hr; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN rankreqhigh TO min_sr; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN rankreqg TO min_gr; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN storelevelreq TO store_level; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN maximumquantity TO max_quantity; + +ALTER TABLE IF EXISTS public.shop_items DROP COLUMN IF EXISTS boughtquantity; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN roadfloorsrequired TO road_floors; + +ALTER TABLE IF EXISTS public.shop_items RENAME COLUMN weeklyfataliskills TO road_fatalis; + +ALTER TABLE public.shop_items RENAME CONSTRAINT normal_shop_items_pkey TO shop_items_pkey; + +ALTER TABLE IF EXISTS public.shop_items DROP CONSTRAINT IF EXISTS normal_shop_items_itemhash_key; + +CREATE SEQUENCE IF NOT EXISTS public.shop_items_id_seq; + +ALTER SEQUENCE IF EXISTS public.shop_items_id_seq OWNER TO postgres; + +ALTER TABLE IF EXISTS public.shop_items ALTER COLUMN id SET DEFAULT nextval('shop_items_id_seq'::regclass); + +ALTER SEQUENCE IF EXISTS public.shop_items_id_seq OWNED BY shop_items.id; + +SELECT setval('shop_items_id_seq', (SELECT MAX(id) FROM public.shop_items)); + +DROP TABLE IF EXISTS public.shop_item_state; + +CREATE TABLE IF NOT EXISTS public.shop_items_bought ( + character_id INTEGER, + shop_item_id INTEGER, + bought INTEGER +); + +UPDATE users SET rights = rights-2; + +ALTER TABLE IF EXISTS public.users ALTER COLUMN rights SET DEFAULT 12; + +END; \ No newline at end of file From 851301b088302a955cfa292c448313dc78689376 Mon Sep 17 00:00:00 2001 From: stratic-dev Date: Fri, 26 Jan 2024 17:59:34 +0000 Subject: [PATCH 5/7] Updated readme and added init schemas to folder --- README.md | 14 ++++++++++++++ docker/init/setup.sh | 2 +- .../{ => initialisation-schema}/9.1-init.sql | Bin schemas/initialisation-schema/9.2-init.sql | Bin 0 -> 55992 bytes 4 files changed, 15 insertions(+), 1 deletion(-) rename schemas/{ => initialisation-schema}/9.1-init.sql (100%) create mode 100644 schemas/initialisation-schema/9.2-init.sql diff --git a/README.md b/README.md index 034e2a4ea..b9be1fb05 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,20 @@ If you want to modify or compile Erupe yourself, please read on. 3. Edit [config.json](./config.json) such that the database password matches your PostgreSQL setup. 4. Run `go build` or `go run .` to compile Erupe. +## Docker + +Please see the readme in [docker/README.md](./docker/README.md). At the moment this is only really good for quick installs and checking out development not for production. + +## Schemas + +We source control the following schemas: +- Initialisation Schemas: These initialise the application database to a clean install from a specific version. +- Update Schemas: These are update files they should be ran in order of version to get to the latest schema. +- Patch Schemas: These are for development and should be ran from the lastest available update schema or initial schema. These eventually get condensed into `Update Schemas` and then deleted when updated to a new version. +- Bundled Schemas: These are demo reference files to allow servers to be able to roll their own shops, distributions gachas and scenarios set ups. + +Note: Patch schemas are subject to change! You should only be using them if you are following along with development. + ## Resources - [Quest and Scenario Binary Files](https://files.catbox.moe/xf0l7w.7z) diff --git a/docker/init/setup.sh b/docker/init/setup.sh index d9fda8d59..b84f83b4d 100644 --- a/docker/init/setup.sh +++ b/docker/init/setup.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e echo "INIT!" -pg_restore --username="$POSTGRES_USER" --dbname="$POSTGRES_DB" --verbose /schemas/9.1-init.sql +pg_restore --username="$POSTGRES_USER" --dbname="$POSTGRES_DB" --verbose /schemas/initialisation-schema/9.1-init.sql diff --git a/schemas/9.1-init.sql b/schemas/initialisation-schema/9.1-init.sql similarity index 100% rename from schemas/9.1-init.sql rename to schemas/initialisation-schema/9.1-init.sql diff --git a/schemas/initialisation-schema/9.2-init.sql b/schemas/initialisation-schema/9.2-init.sql new file mode 100644 index 0000000000000000000000000000000000000000..229b860a5812817c77b313bae6bee700756d8892 GIT binary patch literal 55992 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 jE2<;(I1-iE| Date: Thu, 1 Feb 2024 21:54:40 +0000 Subject: [PATCH 6/7] Delete 9.2-init.sql --- schemas/initialisation-schema/9.2-init.sql | Bin 55992 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 schemas/initialisation-schema/9.2-init.sql diff --git a/schemas/initialisation-schema/9.2-init.sql b/schemas/initialisation-schema/9.2-init.sql deleted file mode 100644 index 229b860a5812817c77b313bae6bee700756d8892..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55992 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 jE2<;(I1-iE| Date: Thu, 1 Feb 2024 21:56:43 +0000 Subject: [PATCH 7/7] Create AUTHORS.md --- AUTHORS.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 AUTHORS.md diff --git a/AUTHORS.md b/AUTHORS.md new file mode 100644 index 000000000..618d34264 --- /dev/null +++ b/AUTHORS.md @@ -0,0 +1,29 @@ +# List of AUTHORS who contributed over time to the Erupe project + +## Point of current development +The project is currently developed under https://github.com/ZeruLight/Erupe + +## History of development +Development of this project dates back to 2019, and was developed under various umbrellas over time: +* Cappuccino (Fist/Ando/Ellie42) (The Erupe Developers), 2019-2020 (https://github.com/Ellie42/Erupe / https://github.com/ricochhet/Erupe-Legacy) (Still active closed source) +* Einherjar Team, ????-2022 Feb (There is no git history for this period, this team's work was taken and used as a foundation for future repositories) +* Community Edition, 2022 (https://github.com/xl3lackout/Erupe) +* Zerulight, 2022-2023 (https://github.com/ZeruLight/Erupe) + +## Authorship of the code +Authorship is assigned for each commit within the git history, which is stored in these git repos: +* https://github.com/ZeruLight/Erupe +* https://github.com/Ellie42/Erupe +* https://github.com/ricochhet/Erupe-Legacy +* https://github.com/xl3lackout/Erupe + +Note there is a divergence between Ellie42s branch and xl3lackout where history has been lost. + +Unfortunately, we have no detailed information on the history of the Erupe pre-2022 +if somebody can provide information, please contact us, so that we can make this history available. + +## Exceptions with third-party libraries +The third-party libraries have their own way of addressing authorship and the authorship of commits importing/updating +a third-party library reflects who did the importing instead of who wrote the code within the commit. + +The Authors of third-party libraries are not explicitly mentioned, and usually is possible to obtain from the files belonging to the third-party libraries. \ No newline at end of file