import DB from "../config/database/db";
import { ResultSetHeader, RowDataPacket } from "mysql2";
import requestTypes from "../schemas/request.schema";
import imageTypes from "../schemas/image.schema";

const imageDB: any = {};

imageDB.getById = async ({ id }: imageTypes) => {
  const query = "Select * from Images where id = ?";
  const data = [id];
  const [rows] = await DB.execute<RowDataPacket[]>(query, data);
  if (rows?.length > 0) return rows[0];
  else return false;
};

imageDB.getByMoveInId = async ({ moveInInspectionId }: imageTypes) => {
  const query = "Select * from Images where moveInInspectionId = ?";
  const data = [moveInInspectionId];
  const [rows] = await DB.execute<RowDataPacket[]>(query, data);
  if (rows?.length > 0) return rows;
  else return false;
};

imageDB.add = async ({
  tenantId,
  roomId,
  moveInInspectionId,
  url,
}: imageTypes) => {
  const query =
    "INSERT INTO Images (tenantId, roomId, moveInInspectionId, url) VALUES (?, ?, ?, ?)";
  const data = [tenantId, roomId, moveInInspectionId, url];
  const [rows] = await DB.query<ResultSetHeader>(query, data);
  return rows.insertId;
};

imageDB.removeByMoveInId = async ({ moveInInspectionId }: imageTypes) => {
  const query = "DELETE FROM Images WHERE moveInInspectionId = ?";
  const data = [moveInInspectionId];
  const [rows] = await DB.query<ResultSetHeader>(query, data);
  return rows.insertId;
};

export default imageDB;
