saleor-apps-redis_apl/apps/invoices/scripts/migrations/v1-to-v2/run-migration.ts

68 lines
2.2 KiB
TypeScript
Raw Normal View History

2023-09-07 14:59:20 +00:00
/* eslint-disable turbo/no-undeclared-env-vars */
import * as dotenv from "dotenv";
import {
fetchCloudAplEnvs,
getMetadataManagerForEnv,
safeParse,
verifyRequiredEnvs,
} from "../migration-utils";
import { ConfigV1ToV2Transformer } from "../../../src/modules/app-configuration/schema-v2/config-v1-to-v2-transformer";
import { AppConfigV2MetadataManager } from "../../../src/modules/app-configuration/schema-v2/app-config-v2-metadata-manager";
import { AppConfigV2 } from "../../../src/modules/app-configuration/schema-v2/app-config";
import { MigrationV1toV2Consts } from "./const";
dotenv.config();
const runMigration = async () => {
verifyRequiredEnvs();
const allEnvs = await fetchCloudAplEnvs();
const results = await Promise.all(
allEnvs.map((env) => {
const metadataManager = getMetadataManagerForEnv(env.saleorApiUrl, env.token);
return Promise.all([
metadataManager.get(MigrationV1toV2Consts.appConfigV1metadataKey, env.saleorApiUrl),
metadataManager.get(MigrationV1toV2Consts.appConfigV2metadataKey),
])
.then(([v1, v2]) => {
if (v2 && v2 !== "undefined") {
console.log("▶️ v2 already exists for ", env.saleorApiUrl);
return;
}
if (!v1) {
console.log("🚫 v1 does not exist for ", env.saleorApiUrl);
return new AppConfigV2MetadataManager(metadataManager)
.set(new AppConfigV2().serialize())
.then((r) => {
console.log(`✅ created empty config for ${env.saleorApiUrl}`);
})
.catch((e) => {
console.log(
`🚫 failed to create empty config for ${env.saleorApiUrl}. Env may not exist.`,
e.message,
);
});
}
const v2Config = new ConfigV1ToV2Transformer().transform(JSON.parse(v1));
return new AppConfigV2MetadataManager(metadataManager)
.set(v2Config.serialize())
.then((r) => {
console.log(`✅ migrated ${env.saleorApiUrl}`);
});
})
.catch((e) => {
console.error("🚫 Failed to migrate ", env.saleorApiUrl, e);
});
}),
);
};
runMigration();