"use server";

import { query } from "@/lib/db";
import { queryTable, exportTable, type CrmContactRow, type TableFilters } from "@/lib/query";
import { CRM_COLUMNS } from "./columns";

export async function fetchCrmContacts(filters: TableFilters, page: number, pageSize: number) {
  return queryTable<CrmContactRow>("yhdmro_crm_cust_contact_change", filters, page, pageSize);
}

export async function exportCrmContacts(filters: TableFilters) {
  return exportTable("yhdmro_crm_cust_contact_change", CRM_COLUMNS, filters);
}

export async function fetchCrmContactById(id: number) {
  const result = await query(
    `SELECT id, query_start_date::text, query_end_date::text, document_date::text, approval_date::text, payment_date::text, extraction_date::text, document_number, vendor_code, vendor_name, material_code, material_name, material_spec, unit, quantity, unit_price, amount, currency, tax_rate, tax_amount, total_amount, status, approver, payment_status, description, business_unit, cost_center, project_code, remarks, batch_id, source_url, row_json FROM yhdmro_crm_cust_contact_change WHERE id = $1`,
    [id]
  );
  return result.rows[0] as CrmContactRow & { row_json: string | null };
}