39 lines
1.0 KiB
TypeScript
Executable File
39 lines
1.0 KiB
TypeScript
Executable File
import { eq } from "drizzle-orm";
|
|
import { db } from "@/lib/db";
|
|
import { tierlistVersions } from "@/lib/db/schema";
|
|
|
|
const dat = await Bun.file("god.sql").text();
|
|
const matches = dat.matchAll(/^([a-z0-9-_]+)\t([a-zA-Z ]+)$/gm);
|
|
const mapping = Object.fromEntries(
|
|
[...matches].map(([_, old, n]) => [old, n.toLowerCase().replace(/ /g, "_")]),
|
|
);
|
|
// console.log(mapping);
|
|
|
|
const versions = await db
|
|
.select({ id: tierlistVersions.id, placements: tierlistVersions.placements })
|
|
.from(tierlistVersions);
|
|
|
|
for (const { placements } of versions) {
|
|
console.log({
|
|
placements: Object.fromEntries(
|
|
Object.entries(placements).map(([k, v]) => [k, v.map((c) => mapping[c])]),
|
|
),
|
|
});
|
|
}
|
|
|
|
await db.transaction(async (tx) => {
|
|
for (const { placements, id } of versions) {
|
|
await tx
|
|
.update(tierlistVersions)
|
|
.set({
|
|
placements: Object.fromEntries(
|
|
Object.entries(placements).map(([k, v]) => [
|
|
k,
|
|
v.map((c) => mapping[c]),
|
|
]),
|
|
),
|
|
})
|
|
.where(eq(tierlistVersions.id, id));
|
|
}
|
|
});
|