1
0
Fork 1
mirror of https://example.com synced 2024-11-22 16:36:39 +09:00

migration: wrap the revert SQL queries in BEGIN; and COMMIT;

Co-authored-by: sup39 <dev@sup39.dev>
This commit is contained in:
naskya 2024-01-22 07:22:29 +09:00
parent 52fea1ddcf
commit 9cfe11e7a0
Signed by: naskya
GPG key ID: 712D413B3A9FED5C
3 changed files with 29 additions and 41 deletions

View file

@ -47,7 +47,7 @@ $(T)/test-revert: neko/revert.sql $(MIGRATIONS)
--user=$(POSTGRES_USER) \ --user=$(POSTGRES_USER) \
--dbname=$(POSTGRES_DB) \ --dbname=$(POSTGRES_DB) \
--set='ON_ERROR_STOP=1' \ --set='ON_ERROR_STOP=1' \
--command="$$(printf 'BEGIN;\n%s\nROLLBACK;' "$$(cat ../neko/revert.sql)")" --command="$$(printf '%s\nROLLBACK;' "$$(cat ../neko/revert.sql | sed '$$ d')")"
touch $@ touch $@

View file

@ -32,25 +32,17 @@
db: firefish_db # これ db: firefish_db # これ
``` ```
6. 次のコマンドでデータベースをいじる前に、そのコマンドが正常に動作するか確認する(`firefish_db` の部分は自分のデータベース名に変更する) 6. このフォークで加えられたデータベースへの変更を取り消す(`firefish_db` の部分は自分のデータベース名に変更する)
```bash
printf 'BEGIN;\n%s\nROLLBACK;' "$(cat neko/revert.sql)" | sudo -u postgres psql --echo-all --set='ON_ERROR_STOP=1' --dbname=firefish_db
```
これには非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)。
出力の最後の行が `ROLLBACK` になっていれば問題ありません。そうでない場合には[私にコマンドの実行ログを送ってください](https://code.naskya.net/naskya/firefish/source-by/main/docs/trouble_shooting.md#私にコマンドの実行ログを送る)。
7. このフォークで加えられたデータベースへの変更を実際に取り消す(`firefish_db` の部分は自分のデータベース名に変更する)
```bash ```bash
sudo -u postgres psql --file=neko/revert.sql --dbname=firefish_db sudo -u postgres psql --file=neko/revert.sql --dbname=firefish_db
``` ```
これに非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)が、**絶対に処理を強制終了しないでください**。 これには非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)が、**絶対に処理を強制終了しないでください**。
8. PGroonga をアンインストールする 出力の最後の行が `COMMIT` になっていれば問題ありません。そうでない場合には[私にコマンドの実行ログを送ってください](https://code.naskya.net/naskya/firefish/source-by/main/docs/trouble_shooting.md#私にコマンドの実行ログを送る)。
7. PGroonga をアンインストールする
コマンドの例 コマンドの例
@ -61,25 +53,25 @@
sudo apt update sudo apt update
``` ```
9. Firefish がインストールされているディレクトリの親ディレクトリ (e.g., `/home/firefish`) に行く 8. Firefish がインストールされているディレクトリの親ディレクトリ (e.g., `/home/firefish`) に行く
```bash ```bash
cd .. cd ..
``` ```
10. Firefish がインストールされているディレクトリ (e.g., `./firefish`) の名前を変える 9. Firefish がインストールされているディレクトリ (e.g., `./firefish`) の名前を変える
```bash ```bash
mv firefish firefish.old mv firefish firefish.old
``` ```
11. Firefish がインストールされているディレクトリと同じ名前で本家版の Firefish を clone する 10. Firefish がインストールされているディレクトリと同じ名前で本家版の Firefish を clone する
```bash ```bash
git clone https://git.joinfirefish.org/firefish/firefish.git firefish git clone https://git.joinfirefish.org/firefish/firefish.git firefish
``` ```
12. 必要なファイルをコピーする 11. 必要なファイルをコピーする
```bash ```bash
rm -rf firefish/files firefish/custom firefish/.config rm -rf firefish/files firefish/custom firefish/.config
@ -88,14 +80,14 @@
cp -r firefish.old/.config firefish cp -r firefish.old/.config firefish
``` ```
13. 新しい Firefish のディレクトリ (e.g., `./firefish`) に入り、`develop` ブランチに行く(実際には既に `develop` にいるはず) 12. 新しい Firefish のディレクトリ (e.g., `./firefish`) に入り、`develop` ブランチに行く(実際には既に `develop` にいるはず)
```bash ```bash
cd firefish cd firefish
git checkout develop git checkout develop
``` ```
14. Firefish をビルドする 13. Firefish をビルドする
```bash ```bash
corepack prepare pnpm@latest --activate corepack prepare pnpm@latest --activate
@ -104,13 +96,13 @@
pnpm run migrate pnpm run migrate
``` ```
15. サーバーを起動して動作を確認する 14. サーバーを起動して動作を確認する
```bash ```bash
sudo systemctl start firefish sudo systemctl start firefish
``` ```
16. 元々 Firefish がインストールされていたディレクトリを削除する 15. 元々 Firefish がインストールされていたディレクトリを削除する
```bash ```bash
cd .. cd ..
@ -153,43 +145,35 @@ Docker を使う場合には以下の `podman`, `podman-compose`, `--podman` を
POSTGRES_DB=firefish_db # これがデータベース名 POSTGRES_DB=firefish_db # これがデータベース名
``` ```
6. 次のコマンドでデータベースをいじる前に、そのコマンドが正常に動作するか確認する(`firefish` と `firefish_db` の部分は自分のユーザー名とデータベース名に変更する) 6. このフォークで加えられたデータベースへの変更を取り消す(`firefish_db` の部分は自分のデータベース名に変更する)
```bash
podman-compose exec db psql --user=firefish --dbname=firefish_db --echo-all --set='ON_ERROR_STOP=1' --command="$(printf 'BEGIN;\n%s\nROLLBACK;' "$(cat neko/revert.sql)")"
```
これには非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)。
出力の最後の行が `ROLLBACK`(またはその後に `exit code: 0` と続いている)になっていれば問題ありません。そうでない場合には[私にコマンドの実行ログを送ってください](https://code.naskya.net/naskya/firefish/source-by/main/docs/trouble_shooting.md#私にコマンドの実行ログを送る)。
7. このフォークで加えられたデータベースへの変更を実際に取り消す(`firefish_db` の部分は自分のデータベース名に変更する)
```bash ```bash
podman-compose exec db psql --user=firefish --dbname=firefish_db --command="$(cat neko/revert.sql)" podman-compose exec db psql --user=firefish --dbname=firefish_db --command="$(cat neko/revert.sql)"
``` ```
これに非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)が、**絶対に処理を強制終了しないでください**。 これには非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)が、**絶対に処理を強制終了しないでください**。
8. Firefish がインストールされているディレクトリの親ディレクトリ (e.g., `/home/firefish`) に行く 出力の最後の行が `ROLLBACK`(またはその後に `exit code: 0` と続いている)になっていれば問題ありません。そうでない場合には[私にコマンドの実行ログを送ってください](https://code.naskya.net/naskya/firefish/source-by/main/docs/trouble_shooting.md#私にコマンドの実行ログを送る)。
7. Firefish がインストールされているディレクトリの親ディレクトリ (e.g., `/home/firefish`) に行く
```bash ```bash
cd .. cd ..
``` ```
9. Firefish がインストールされているディレクトリ (e.g., `./firefish`) の名前を変える 8. Firefish がインストールされているディレクトリ (e.g., `./firefish`) の名前を変える
```bash ```bash
mv firefish firefish.old mv firefish firefish.old
``` ```
10. Firefish がインストールされているディレクトリと同じ名前で本家版の Firefish を clone する 9. Firefish がインストールされているディレクトリと同じ名前で本家版の Firefish を clone する
```bash ```bash
git clone https://git.joinfirefish.org/firefish/firefish.git firefish git clone https://git.joinfirefish.org/firefish/firefish.git firefish
``` ```
11. 必要なファイルをコピーする 10. 必要なファイルをコピーする
```bash ```bash
rm -rf firefish/files firefish/custom firefish/.config rm -rf firefish/files firefish/custom firefish/.config
@ -198,13 +182,13 @@ Docker を使う場合には以下の `podman`, `podman-compose`, `--podman` を
cp -r firefish.old/.config firefish cp -r firefish.old/.config firefish
``` ```
12. 新しい Firefish のディレクトリ (e.g., `./firefish`) に入る 11. 新しい Firefish のディレクトリ (e.g., `./firefish`) に入る
```bash ```bash
cd firefish cd firefish
``` ```
13. サーバーを起動して動作を確認する 12. サーバーを起動して動作を確認する
```bash ```bash
podman-compose up --detach podman-compose up --detach
@ -212,7 +196,7 @@ Docker を使う場合には以下の `podman`, `podman-compose`, `--podman` を
`docker-compose.yml` にカスタムが必要な場合には、各自で編集してください。 `docker-compose.yml` にカスタムが必要な場合には、各自で編集してください。
14. 元々 Firefish がインストールされていたディレクトリを削除する 13. 元々 Firefish がインストールされていたディレクトリを削除する
```bash ```bash
cd .. cd ..

View file

@ -1,3 +1,5 @@
BEGIN;
-- remove-nsfw-detection -- remove-nsfw-detection
ALTER TABLE "user_profile" ADD "autoSensitive" boolean NOT NULL DEFAULT false; ALTER TABLE "user_profile" ADD "autoSensitive" boolean NOT NULL DEFAULT false;
ALTER TABLE "meta" ADD "enableSensitiveMediaDetectionForVideos" boolean NOT NULL DEFAULT false; ALTER TABLE "meta" ADD "enableSensitiveMediaDetectionForVideos" boolean NOT NULL DEFAULT false;
@ -102,3 +104,5 @@ DROP EXTENSION pgroonga CASCADE;
-- emoji-moderator -- emoji-moderator
ALTER TABLE "user" DROP COLUMN "emojiModPerm"; ALTER TABLE "user" DROP COLUMN "emojiModPerm";
DROP TYPE "public"."user_emojimodperm_enum"; DROP TYPE "public"."user_emojimodperm_enum";
COMMIT;