mirror of
https://github.com/spacebarchat/server.git
synced 2024-11-06 10:52:31 +01:00
48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
|
import { config } from "dotenv";
|
||
|
config();
|
||
|
import * as Models from "../entities";
|
||
|
import { User } from "../entities/User";
|
||
|
import { createConnection, Connection } from "typeorm";
|
||
|
import { initDatabase } from "../util/Database";
|
||
|
import "missing-native-js-functions";
|
||
|
|
||
|
async function main() {
|
||
|
if (!process.env.FROM) throw new Error("FROM database env connection string not set");
|
||
|
|
||
|
// @ts-ignore
|
||
|
const entities = Object.values(Models).filter((x) => x.constructor.name !== "Object" && x.name);
|
||
|
|
||
|
const newDB = await initDatabase();
|
||
|
|
||
|
// @ts-ignore
|
||
|
const oldDB = await createConnection({
|
||
|
type: process.env.FROM.split(":")[0]?.replace("+srv", ""),
|
||
|
url: process.env.FROM,
|
||
|
entities,
|
||
|
name: "old",
|
||
|
});
|
||
|
|
||
|
await Promise.all(
|
||
|
entities.map(async (x) => {
|
||
|
const data = await oldDB.manager.find(User);
|
||
|
|
||
|
await Promise.all(
|
||
|
data.map(async (x) => {
|
||
|
try {
|
||
|
await newDB.manager.insert(User, x);
|
||
|
} catch (error) {
|
||
|
if (!x.id) throw new Error("object doesn't have a unique id: " + x);
|
||
|
await newDB.manager.update(User, { id: x.id }, x);
|
||
|
}
|
||
|
})
|
||
|
);
|
||
|
// @ts-ignore
|
||
|
console.log("migrated all " + x.name);
|
||
|
})
|
||
|
);
|
||
|
|
||
|
console.log("SUCCESS migrated all data");
|
||
|
}
|
||
|
|
||
|
main().caught();
|