<aside> 💡 追記(2022/12/3)
6.にて示していた、マイグレーションファイルの保存場所に誤りがありました。
誤:./migration/1663059152853-de-groundpolis.js
正:./packages/backend/migration/1663059152853-de-groundpolis.js
誤った手順で作業してしまった管理者さん向けの対応手順を追加しました。ご確認お願いします。
</aside>
GroundpolisからMisskeyに移行する手順を示します。
git remote set-url origin <https://github.com/misskey-dev/misskey>
git fetch origin
git reset --hard origin/master
いくつかのマイグレーションファイルがGroundpolisと競合しているため削除します。処理がダブっているものなので、削除しても問題ありません。
rm -rf node_modules built
yarn install
NODE_ENV=production yarn build
以下のファイルを./packages/backend/migration/1663059152853-de-groundpolis.js
に保存します。
このファイルは、Groundpolis特有のデータをMisskeyに適合する形に変更するためのマイグレーションファイルです。
export class deGroundpolis1663059152853 {
name = 'deGroundpolis1663059152853'
async up(queryRunner) {
// さよなら、公開範囲「ログインユーザー公開範囲」
await queryRunner.query(`UPDATE "note" SET "visibility"='followers' WHERE "visibility"='users'`);
// リモートフォロワーとローカル フラグがついていたら、ローカル投稿に変換する
await queryRunner.query(`UPDATE "note" SET "localOnly"=TRUE WHERE "remoteFollowersOnly"=TRUE`);
// FF表示するかどうかのフラグがGPとMisskeyで違うので、変換
queryRunner.query(`SELECT "id" FROM "user" WHERE "hideFF"=TRUE and "host" IS NULL`)
.then(users => Promise.all(users.map(user => {
return queryRunner.query(`UPDATE "user_profile" SET "ffVisibility"='private' WHERE "userId"=$1`, [user.id]);
})));
// 「リノートのみミュート」を削除し、意図しないミュートを回避
queryRunner.query(`DELETE FROM muting WHERE "isRenoteOnly"=TRUE`);
}
async down(queryRunner) {
// なにもしない
}
}