import { eq, inArray } from 'drizzle-orm';
import type { DrizzleClient } from '../client.js';
import { dealImages } from '../schema.js';

export type CreateDealImageInput = typeof dealImages.$inferInsert;

export async function insertDealImage(
  db: DrizzleClient,
  values: CreateDealImageInput,
): Promise<void> {
  await db.insert(dealImages).values(values);
}

export async function setDealImagePrimary(
  db: DrizzleClient,
  imageId: string,
  isPrimary: boolean,
): Promise<void> {
  await db.update(dealImages).set({ isPrimary }).where(eq(dealImages.id, imageId));
}

export async function setDealImageApprovalStatusForIds(
  db: DrizzleClient,
  ids: string[],
  approvalStatus: typeof dealImages.$inferInsert.approvalStatus,
): Promise<void> {
  if (ids.length === 0) return;
  await db.update(dealImages).set({ approvalStatus }).where(inArray(dealImages.id, ids));
}

export async function approveDealImagesForDeal(db: DrizzleClient, dealId: string): Promise<void> {
  await db.update(dealImages).set({ approvalStatus: 'APPROVED' }).where(eq(dealImages.dealId, dealId));
}
