el.xwx.moe/scripts/migration/descriptionToName.js
2024-05-24 20:42:27 -04:00

71 lines
1.4 KiB
JavaScript

// [Optional, but recommended]
// We decided that the "name" field should be the auto-generated field instead of the "description" field, so we need to
// move the data from the "description" field to the "name" field for links that have an empty name.
// This script is meant to be run only once.
// Run the script with `node scripts/migration/descriptionToName.js`
const { PrismaClient } = require("@prisma/client");
const prisma = new PrismaClient();
async function main() {
console.log("Starting...");
const count = await prisma.link.count({
where: {
name: "",
description: {
not: "",
},
},
});
console.log(
`Applying the changes to ${count} ${
count == 1 ? "link" : "links"
} in 10 seconds...`
);
await new Promise((resolve) => setTimeout(resolve, 10000));
console.log("Applying the changes...");
const links = await prisma.link.findMany({
where: {
name: "",
description: {
not: "",
},
},
select: {
id: true,
description: true,
},
});
for (const link of links) {
await prisma.link.update({
where: {
id: link.id,
},
data: {
name: link.description,
description: "",
},
});
}
console.log("Done!");
}
main()
.catch((e) => {
throw e;
})
.finally(async () => {
await prisma.$disconnect();
});