import fs from "node:fs/promises"; import { defineEventHandler, setResponseStatus, readBody } from "h3"; import { database as db } from "../utils/database"; import { isFirstRun } from "./firstRun.get"; import { getPasswordHash } from "./login.post"; import Snowflake from "~/utils/snowflake"; import { createError } from "#imports"; export default defineEventHandler(async (e) => { if (!isFirstRun()) { setResponseStatus(e, 404); return ""; } const body = await readBody(e); if (typeof body !== "object") throw createError({ message: "Invalid body", statusCode: 400 }); const username = body.username; if (typeof username !== "string") throw createError({ message: "username is not string", statusCode: 400 }); const password = body.password; if (typeof password !== "string") throw createError({ message: "password is not string", statusCode: 400 }); const email = body.email; if (typeof email !== "string") throw createError({ message: "email is not string", statusCode: 400 }); const sql = await fs.readFile("./schemaModel.sql", "utf-8"); const database = await db.new({ multipleStatements: true }); await database.query(sql); await database.execute( "INSERT INTO `users` (`id`, `username`, `password`, `email`) VALUES (?, ?, ?, ?)", [new Snowflake().toString(), username, getPasswordHash(password), email]); return ""; });