import { ResultSetHeader, RowDataPacket } from "mysql2";
import DB from "../config/database/db";
import tenantVehicleInfoTypes from "../schemas/tenantVehicleInfo.schema";

let tenantVehicleInfoDB: any = {};

tenantVehicleInfoDB.add = async ({
  tenantId,
  clientId,
  vehicleNumber,
  type,
  model,
  color
}: tenantVehicleInfoTypes) => {
  const query = `INSERT INTO TenantVehicleInfo (tenantId, clientId, vehicleNumber, type, model, color) VALUES (?, ?, ?, ?, ?, ?)`;
  const data = [
    tenantId,
    clientId,
    vehicleNumber,
    type,
    model,
    color
  ];
  const [row] = await DB.query<ResultSetHeader>(query, data);
  return row.insertId;
};

tenantVehicleInfoDB.getByTenantIdAndClientId = async ({
    clientId,
    tenantId,
 }: tenantVehicleInfoTypes) => {
  const query = "Select * from TenantVehicleInfo where clientId = ? AND tenantId = ?";
  const data = [clientId, tenantId];
  const [rows] = await DB.execute<RowDataPacket[]>(query, data);
  if (rows?.length > 0) return rows[0];
  else return false;
};

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

tenantVehicleInfoDB.update = async ({
    id,
    vehicleNumber,
    type,
    model,
    color,
}: tenantVehicleInfoTypes) => {
  const query = `UPDATE TenantVehicleInfo SET vehicleNumber = ?, type = ?, model = ?, color = ? WHERE id = ?`;
  const data = [
    vehicleNumber,
    type,
    model,
    color,
    id
  ];
  const [row] = await DB.query<ResultSetHeader>(query, data);
  return row.affectedRows;
};

tenantVehicleInfoDB.delete = async ({
    id,
}: tenantVehicleInfoTypes) => {
  const query = `DELETE FROM TenantVehicleInfo WHERE id = ?`;
  const data = [id];
  const [row] = await DB.query<ResultSetHeader>(query, data);
  return row.affectedRows;
};

export default tenantVehicleInfoDB;