import { NextResponse } from 'next/server';
import { typedQuery } from '@/backend/utils/typedQuery';

type LoanFeatureRow = {
  creditcardsname: string;
  feature: string;
};

type Bank = {
  bankcode: string;
  bankname: string;
};

type LoanType = {
  loantypecode: string;
  loantypedesc: string;
};

export async function GET() {
  try {
    const [featureRows] = await typedQuery<LoanFeatureRow>(
      `
        SELECT DISTINCT lf.loanfeatureDetails AS feature,
                        ld.loanname         AS creditcardsname
        FROM loansdetails ld
        INNER JOIN loanfeatures lf ON lf.idloan = ld.idloan
      `
    );

    const [bankRows] = await typedQuery<Bank>(
      `
        SELECT bankcode, bankname FROM banks
      `
    );

    const [loanTypesRows] = await typedQuery<LoanType>(
      `
        SELECT loantypecode, loantypedesc
        FROM loantypes
      `
    );

    return NextResponse.json({
      success: true,
      featuresByCard: featureRows,
      banks: bankRows,
      loantypes: loanTypesRows,
    });
  } catch (error: unknown) {
    console.error('API error:', error);
    return NextResponse.json(
      { success: false, error: error instanceof Error ? error.message : 'Unknown error' },
      { status: 500 }
    );
  }
}
