mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-05 20:56:13 -05:00
35 lines
996 B
JavaScript
35 lines
996 B
JavaScript
import { readFileSync } from "node:fs";
|
|
import { dirname, resolve } from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
export function up(db) {
|
|
const dir = dirname(fileURLToPath(import.meta.url));
|
|
const jsonPath = resolve(dir, "../scripts/join-order.json");
|
|
const mapping = JSON.parse(readFileSync(jsonPath, "utf-8"));
|
|
|
|
db.transaction(() => {
|
|
db.prepare(/* sql */ `alter table "User" add "joinOrder" integer`).run();
|
|
|
|
const stmt = db.prepare(
|
|
/* sql */ `update "User" set "joinOrder" = ? where "id" = ?`,
|
|
);
|
|
for (const [sqliteId, joinOrder] of Object.entries(mapping)) {
|
|
stmt.run(joinOrder, Number(sqliteId));
|
|
}
|
|
|
|
const maxJoinOrder = db
|
|
.prepare(/* sql */ `select max("joinOrder") as m from "User"`)
|
|
.get().m;
|
|
|
|
const unmapped = db
|
|
.prepare(
|
|
/* sql */ `select "id" from "User" where "joinOrder" is null order by "id" asc`,
|
|
)
|
|
.all();
|
|
|
|
for (let i = 0; i < unmapped.length; i++) {
|
|
stmt.run(maxJoinOrder + 1 + i, unmapped[i].id);
|
|
}
|
|
})();
|
|
}
|