import { db } from "./src/internal/datastore";
import { resolve } from "path";
import { promises as fs } from "fs";
import { Migrator, FileMigrationProvider } from "kysely";

async function main() {
  const migrator = new Migrator({
    db,
    provider: new FileMigrationProvider({
      fs,
      path: require("path"),
      migrationFolder: resolve(__dirname, "src/internal/datastore/migrations"),
    }),
  });

  const { error, results } = await migrator.migrateToLatest();

  results?.forEach((it) => {
    if (it.status === "Success") {
      console.log(`migration "${it.migrationName}" was executed successfully`);
    } else if (it.status === "Error") {
      console.error(`failed to execute migration "${it.migrationName}"`);
    }
  });

  if (error) {
    console.error("failed to migrate");
    console.error(error);
    process.exit(1);
  }

  await db.destroy();
}

main();
