import { DBEType } from "@/models/ErrorType";
import { NoteStatusMap } from "@/models/projects/notesMap";
import { ProjectStatusMap } from "@/models/projects/statusMap";
import { postServerLog } from "@/services/logs";
import { ResultSetHeader } from "mysql2";
import { PoolConnection } from "mysql2/promise";

export async function updateDatabase(props: {
  con: PoolConnection;
  subdomain?: string;
  email?: string;
  url?: string;
}): Promise<void> {
  if (props.url) {
    const domainNoteQuery = `
      INSERT INTO DOMAINNOTES 
        (DOMAIN, TITLE, NOTE, STATUS) 
      VALUES 
        ((
          SELECT ID FROM DOMAINS WHERE NAME = ?
        ), ?, ?, ?)
      `;

    const domainNoteParams = [
      props.url,
      "Updated information",
      "This client was updated the information, please modify the website",
      NoteStatusMap.OPEN,
    ];

    await props.con.query(domainNoteQuery, domainNoteParams);
  } else {
    const domainQuery =
      "INSERT INTO DOMAINS (NAME, EMAIL, SSL_REDIRECT, REDIRECTS_TO, STATUS) VALUES (?, ?, ?, ?, ?)";
    const domainParams = [
      props.subdomain,
      props.email,
      0,
      "not redirected",
      ProjectStatusMap.PENDING,
    ];

    const [result] = await props.con.query<ResultSetHeader>(
      domainQuery,
      domainParams,
    );

    const domainNoteQuery = `
      INSERT INTO DOMAINNOTES 
        (DOMAIN, TITLE, NOTE, STATUS) 
      VALUES 
        (?, ?, ?, ?)
      `;

    const domainNoteParams = [
      result.insertId,
      "New Subdomain",
      "This site was recently created, please adjust the information and design.",
      NoteStatusMap.OPEN,
    ];

    await props.con.query(domainNoteQuery, domainNoteParams);
  }
}
