fix: migrations
This commit is contained in:
@@ -1,41 +1,65 @@
|
||||
version: "3"
|
||||
|
||||
vars:
|
||||
PROJECT: nalu_b2b
|
||||
BUILD_DIR: ./bin
|
||||
|
||||
REMOTE_USER: root
|
||||
REMOTE_HOST: dc02-de
|
||||
EMAIL_SMTP_PORT: 1025
|
||||
EMAIL_SMTP_HOST: localhost
|
||||
|
||||
LOCAL_DB_SERVICE: db
|
||||
LOCAL_DB_USER: nalu
|
||||
LOCAL_DB_NAME: nalu
|
||||
LOCAL_DB_PASSWORD: Maal12345678
|
||||
DUMP_FILE_NAME:
|
||||
sh: echo nalu_$(date +%Y_%m_%d__%H_%M_%S).sql
|
||||
REMOTE_DB_SERVICE: "www_naluconcept_com_nalu_db"
|
||||
REMOTE_DB_NAME: "presta"
|
||||
REMOTE_DB_USER: "presta"
|
||||
REMOTE_DB_PASS: "presta"
|
||||
|
||||
tasks:
|
||||
|
||||
reset:
|
||||
desc: Drop and recreate database
|
||||
cmds:
|
||||
- |
|
||||
docker compose -p {{.PROJECT}} exec -T {{.DB_SERVICE_NAME}} sh -c "PGPASSWORD='{{.DB_PASSWORD}}' psql -U {{.DB_USER}} -d postgres -c \
|
||||
\"SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='{{.DB_NAME}}' AND pid<>pg_backend_pid();\""
|
||||
- |
|
||||
docker compose -p {{.PROJECT}} exec -T {{.DB_SERVICE_NAME}} sh -c "PGPASSWORD='{{.DB_PASSWORD}}' psql -U {{.DB_USER}} -d postgres -c \"DROP DATABASE IF EXISTS {{.DB_NAME}};\""
|
||||
- |
|
||||
docker compose -p {{.PROJECT}} exec -T {{.DB_SERVICE_NAME}} sh -c "PGPASSWORD='{{.DB_PASSWORD}}' psql -U {{.DB_USER}} -d postgres -c \"CREATE DATABASE {{.DB_NAME}};\""
|
||||
- >
|
||||
docker compose -p {{.PROJECT}} exec -T {{.LOCAL_DB_SERVICE}} mariadb -u {{.LOCAL_DB_USER}} --password={{.LOCAL_DB_PASSWORD}}
|
||||
-e 'DROP DATABASE IF EXISTS {{.LOCAL_DB_NAME}}; CREATE DATABASE IF NOT EXISTS {{.LOCAL_DB_NAME}};'
|
||||
|
||||
|
||||
restore:
|
||||
desc: Restore DB from file
|
||||
aliases: [r]
|
||||
silent: true
|
||||
preconditions:
|
||||
- sh: '[ -n "{{index .CLI_ARGS_LIST 0}}" ]'
|
||||
msg: "Usage: task db:restore -- dump.sql"
|
||||
cmds:
|
||||
- task db:reset
|
||||
- |
|
||||
cat {{index .CLI_ARGS_LIST 0}} | docker compose -p {{.PROJECT}} exec -T {{.DB_SERVICE_NAME}} sh -c "PGPASSWORD='{{.DB_PASSWORD}}' psql -U {{.DB_USER}} -d {{.DB_NAME}}"
|
||||
- task db:migrate
|
||||
{{if eq (len .CLI_ARGS_LIST) 0}}
|
||||
echo "Error: No file path provided."
|
||||
exit 1
|
||||
{{else}}
|
||||
cat {{index .CLI_ARGS_LIST 0}} | docker compose -p {{.PROJECT}} exec -T {{.LOCAL_DB_SERVICE}} mariadb \
|
||||
-u {{.LOCAL_DB_USER}} --password={{.LOCAL_DB_PASSWORD}} \
|
||||
{{.LOCAL_DB_NAME}}
|
||||
{{end}}
|
||||
- task db:mal
|
||||
|
||||
|
||||
migrate:
|
||||
desc: Apply SQL migrations
|
||||
aliases: [m]
|
||||
migrations_apply_localy:
|
||||
aliases: [mal]
|
||||
desc: Apply Migrations to local database
|
||||
silent: true
|
||||
cmds:
|
||||
- |
|
||||
sed '/-- +goose Down/,$d' i18n/migrations/20260302163100_routes.sql | docker compose -p {{.PROJECT}} exec -T -e PGPASSWORD={{.DB_PASSWORD}} {{.DB_SERVICE_NAME}} psql -U {{.DB_USER}} -d {{.DB_NAME}}
|
||||
sed '/-- +goose Down/,$d' i18n/migrations/20260302163122_create_tables.sql | docker compose -p {{.PROJECT}} exec -T -e PGPASSWORD={{.DB_PASSWORD}} {{.DB_SERVICE_NAME}} psql -U {{.DB_USER}} -d {{.DB_NAME}}
|
||||
sed '/-- +goose Down/,$d' i18n/migrations/20260302163152_translations_backoffice.sql | docker compose -p {{.PROJECT}} exec -T -e PGPASSWORD={{.DB_PASSWORD}} {{.DB_SERVICE_NAME}} psql -U {{.DB_USER}} -d {{.DB_NAME}}
|
||||
sed '/-- +goose Down/,$d' i18n/migrations/20260302163157_translations_backend.sql | docker compose -p {{.PROJECT}} exec -T -e PGPASSWORD={{.DB_PASSWORD}} {{.DB_SERVICE_NAME}} psql -U {{.DB_USER}} -d {{.DB_NAME}}
|
||||
|
||||
- |
|
||||
sed '/-- +goose Down/,$d' i18n/migrations/20260302163100_routes.sql | docker compose -p {{.PROJECT}} exec -T {{.LOCAL_DB_SERVICE}} mariadb -u {{.LOCAL_DB_USER}} --password={{.LOCAL_DB_PASSWORD}} {{.LOCAL_DB_NAME}}
|
||||
sed '/-- +goose Down/,$d' i18n/migrations/20260302163122_create_tables.sql | docker compose -p {{.PROJECT}} exec -T {{.LOCAL_DB_SERVICE}} mariadb -u {{.LOCAL_DB_USER}} --password={{.LOCAL_DB_PASSWORD}} {{.LOCAL_DB_NAME}}
|
||||
sed '/-- +goose Down/,$d' i18n/migrations/20260302163152_translations_backoffice.sql | docker compose -p {{.PROJECT}} exec -T {{.LOCAL_DB_SERVICE}} mariadb -u {{.LOCAL_DB_USER}} --password={{.LOCAL_DB_PASSWORD}} {{.LOCAL_DB_NAME}}
|
||||
sed '/-- +goose Down/,$d' i18n/migrations/20260302163157_translations_backend.sql | docker compose -p {{.PROJECT}} exec -T {{.LOCAL_DB_SERVICE}} mariadb -u {{.LOCAL_DB_USER}} --password={{.LOCAL_DB_PASSWORD}} {{.LOCAL_DB_NAME}}
|
||||
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
version: "3"
|
||||
|
||||
tasks:
|
||||
|
||||
pull:
|
||||
desc: Pull remote Gitea DB into local DB
|
||||
aliases: [gp]
|
||||
silent: true
|
||||
cmds:
|
||||
- task db:reset
|
||||
- |
|
||||
ssh {{.REMOTE_USER}}@{{.REMOTE_HOST}} \
|
||||
"docker exec {{.GITEA_SERVICE}} pg_dump -U {{.GITEA_USER}} {{.GITEA_DB}}" | docker compose -p {{.PROJECT}} exec -T {{.DB_SERVICE_NAME}} sh -c "PGPASSWORD='{{.DB_PASSWORD}}' psql -U {{.DB_USER}} -d {{.DB_NAME}}"
|
||||
|
||||
|
||||
dump:
|
||||
desc: Dump remote Gitea DB to file
|
||||
aliases: [gd]
|
||||
silent: true
|
||||
cmds:
|
||||
- |
|
||||
ssh {{.REMOTE_USER}}@{{.REMOTE_HOST}} "docker exec {{.GITEA_SERVICE}} pg_dump -U {{.GITEA_USER}} {{.GITEA_DB}}" > {{.DUMP_FILE_NAME}}
|
||||
|
||||
|
||||
gitea_pull_db_to_file_ma_al_pl:
|
||||
desc: Pull remote Gitea DB and upload to file.ma-al.pl
|
||||
aliases: [rdbtfmpl]
|
||||
silent: true
|
||||
vars:
|
||||
SERVER: https://file.ma-al.pl
|
||||
TARGET_DIR: maal_internal/timetracker/dumps
|
||||
TMP_DIR: /tmp
|
||||
TOKEN:
|
||||
sh: |
|
||||
curl -s -u "{{.FILE_MAAL_PL_USER}}:{{.FILE_MAAL_PL_PASSWORD}}" "{{.SERVER}}/api/v2/user/token" | jq -r .access_token
|
||||
preconditions:
|
||||
- sh: '[ -n "{{.FILE_MAAL_PL_USER}}" ]'
|
||||
msg: "Missing FILE_MAAL_PL_USER in .env"
|
||||
- sh: '[ -n "{{.FILE_MAAL_PL_PASSWORD}}" ]'
|
||||
msg: "Missing FILE_MAAL_PL_PASSWORD in .env"
|
||||
cmds:
|
||||
- |
|
||||
ssh {{.REMOTE_USER}}@{{.REMOTE_HOST}} "docker exec {{.GITEA_REMOTE_SERVICE}} pg_dump -U {{.GITEA_REMOTE_DB_USER}} {{.GITEA_REMOTE_DB_NAME}}" > {{.TMP_DIR}}/{{.DUMP_FILE_NAME}}
|
||||
- >
|
||||
curl -X POST "{{.SERVER}}/api/v2/user/files/upload?path={{.TARGET_DIR}}/{{.DUMP_FILE_NAME}}&mkdir_parents=true" -H "Authorization: Bearer {{.TOKEN}}" -H "Content-Type: application/x-tar" --data-binary "@{{.TMP_DIR}}/{{.DUMP_FILE_NAME}}"
|
||||
- |
|
||||
rm -f {{.TMP_DIR}}/{{.DUMP_FILE_NAME}}
|
||||
65
taskfiles/nalu_db.yml
Normal file
65
taskfiles/nalu_db.yml
Normal file
@@ -0,0 +1,65 @@
|
||||
version: "3"
|
||||
|
||||
tasks:
|
||||
|
||||
pull:
|
||||
desc: Pull remote Gitea DB into local DB
|
||||
aliases: [gp]
|
||||
silent: true
|
||||
cmds:
|
||||
- task db:reset
|
||||
- |
|
||||
ssh {{.REMOTE_USER}}@{{.REMOTE_HOST}} \
|
||||
"docker exec {{.GITEA_SERVICE}} pg_dump -U {{.GITEA_USER}} {{.GITEA_DB}}" | docker compose -p {{.PROJECT}} exec -T {{.DB_SERVICE_NAME}} sh -c "PGPASSWORD='{{.DB_PASSWORD}}' psql -U {{.DB_USER}} -d {{.DB_NAME}}"
|
||||
|
||||
|
||||
dump:
|
||||
desc: Dump remote Gitea DB to file
|
||||
aliases: [dump]
|
||||
# silent: true
|
||||
vars:
|
||||
TEMP_DB_NAME: "temp_db_copy"
|
||||
SERVER: https://file.ma-al.pl
|
||||
TARGET_DIR: /maal_internal/nalu_b2b/dumps
|
||||
TMP_DIR: /tmp
|
||||
REMOTE_DB_USER: root
|
||||
REMOTE_DB_PASS: Maal12345678
|
||||
TOKEN:
|
||||
sh: curl -s -X GET {{.SERVER}}/api/v2/user/token -u "{{.FILE_MAAL_PL_USER}}:{{.FILE_MAAL_PL_PASSWORD}}" | jq -r .access_token
|
||||
cmds:
|
||||
- >
|
||||
ssh {{.REMOTE_USER}}@{{.REMOTE_HOST}} "docker exec \$(docker ps -q -f name={{.REMOTE_DB_SERVICE}}) mariadb -u {{.REMOTE_DB_USER}} --password={{.REMOTE_DB_PASS}} -e 'CREATE DATABASE IF NOT EXISTS {{.TEMP_DB_NAME}}'"
|
||||
- >
|
||||
ssh {{.REMOTE_USER}}@{{.REMOTE_HOST}}
|
||||
"docker exec \$(docker ps -q -f name={{.REMOTE_DB_SERVICE}}) bash -c \"mariadb-dump --routines --events --triggers -u {{.REMOTE_DB_USER}} --password={{.REMOTE_DB_PASS}} {{.REMOTE_DB_NAME}} | sed 's/DEFINER[ ]*=[ ]*[^ ]*//' | mariadb -u {{.REMOTE_DB_USER}} --password={{.REMOTE_DB_PASS}} {{.TEMP_DB_NAME}}\""
|
||||
- >
|
||||
ssh {{.REMOTE_USER}}@{{.REMOTE_HOST}}
|
||||
"docker exec \$(docker ps -q -f name={{.REMOTE_DB_SERVICE}}) mariadb -u {{.REMOTE_DB_USER}} --password={{.REMOTE_DB_PASS}} {{.TEMP_DB_NAME}} -e \"
|
||||
UPDATE IGNORE ps_customer SET email = REGEXP_REPLACE(email, '@.*$', '@ma-al.com');
|
||||
UPDATE ps_configuration SET value = '${HOST_TO_SERVE}' WHERE name = 'PS_SHOP_DOMAIN';
|
||||
UPDATE ps_configuration SET value = '${HOST_TO_SERVE}' WHERE name = 'PS_SHOP_DOMAIN_SSL';
|
||||
UPDATE ps_configuration SET value = '${USE_SSL:-1}' WHERE name = 'PS_SSL_ENABLED';
|
||||
UPDATE ps_configuration SET value = '1' WHERE name = 'PS_SSL_ENABLED_EVERYWHERE';
|
||||
UPDATE ps_configuration SET value = '2' WHERE name = 'PS_MAIL_METHOD';
|
||||
UPDATE ps_configuration SET value = 'admin@ma-al.com' WHERE name = 'PS_SHOP_EMAIL';
|
||||
UPDATE ps_configuration SET value = 'maildev' WHERE name = 'PS_MAIL_SERVER';
|
||||
UPDATE ps_configuration SET value = '' WHERE name = 'PS_MAIL_USER';
|
||||
UPDATE ps_configuration SET value = '' WHERE name = 'PS_MAIL_PASSWD';
|
||||
UPDATE ps_configuration SET value = 'off' WHERE name = 'PS_MAIL_SMTP_ENCRYPTION';
|
||||
UPDATE ps_configuration SET value = '1025' WHERE name = 'PS_MAIL_SMTP_PORT';
|
||||
UPDATE ps_configuration SET value = 'admin@ma-al.com' WHERE name = 'MA_MERCHANT_MAILS';
|
||||
UPDATE ps_shop_url SET domain = '${HOST_TO_SERVE}', domain_ssl = '${HOST_TO_SERVE}' WHERE id_shop_url = '1';
|
||||
UPDATE ps_configuration SET value='0' WHERE (ps_configuration.name = 'PS_SMARTY_CACHE');
|
||||
UPDATE ps_configuration SET value='0' WHERE (ps_configuration.name = 'PS_CSS_THEME_CACHE');
|
||||
UPDATE ps_configuration SET value='0' WHERE (ps_configuration.name = 'PS_JS_THEME_CACHE');
|
||||
\""
|
||||
- >
|
||||
ssh {{.REMOTE_USER}}@{{.REMOTE_HOST}}
|
||||
"docker exec \$(docker ps -q -f name={{.REMOTE_DB_SERVICE}}) mariadb-dump --routines --events --triggers -u {{.REMOTE_DB_USER}} --password={{.REMOTE_DB_PASS}} {{.TEMP_DB_NAME}}" > {{.TMP_DIR}}/{{.DUMP_FILE_NAME}}
|
||||
- sed -i 's/DEFINER[ ]*=[ ]*[^ ]*//' {{.TMP_DIR}}/{{.DUMP_FILE_NAME}}
|
||||
- >
|
||||
curl -X POST "{{.SERVER}}/api/v2/user/files/upload?path={{.TARGET_DIR}}/{{.DUMP_FILE_NAME}}&mkdir_parents=true" -H "Authorization: Bearer {{.TOKEN}}" -H "Content-Type: application/x-tar" --data-binary "@{{.TMP_DIR}}/{{.DUMP_FILE_NAME}}"
|
||||
- rm -rf {{.TMP_DIR}}/{{.DUMP_FILE_NAME}}
|
||||
- >
|
||||
ssh {{.REMOTE_USER}}@{{.REMOTE_HOST}} "docker exec \$(docker ps -q -f name={{.REMOTE_DB_SERVICE}}) mariadb -u {{.REMOTE_DB_USER}} --password={{.REMOTE_DB_PASS}} -e 'DROP DATABASE IF EXISTS {{.TEMP_DB_NAME}}'"
|
||||
|
||||
Reference in New Issue
Block a user