import {
  category,
  product,
  productCategory,
  variant,
  variantPrice,
} from '@platform-modules/commerce-catalog';
import type { DrizzleClient } from '../client.js';

export async function insertCategory(
  db: DrizzleClient,
  values: typeof category.$inferInsert | (typeof category.$inferInsert)[],
): Promise<void> {
  const rows = Array.isArray(values) ? values : [values];
  if (rows.length === 0) return;
  await db.insert(category).values(rows).onConflictDoNothing();
}

export async function insertProduct(
  db: DrizzleClient,
  values: typeof product.$inferInsert | (typeof product.$inferInsert)[],
): Promise<void> {
  const rows = Array.isArray(values) ? values : [values];
  if (rows.length === 0) return;
  await db.insert(product).values(rows).onConflictDoNothing();
}

export async function insertProductCategory(
  db: DrizzleClient,
  values: typeof productCategory.$inferInsert | (typeof productCategory.$inferInsert)[],
): Promise<void> {
  const rows = Array.isArray(values) ? values : [values];
  if (rows.length === 0) return;
  await db.insert(productCategory).values(rows).onConflictDoNothing();
}

export async function insertVariant(
  db: DrizzleClient,
  values: typeof variant.$inferInsert | (typeof variant.$inferInsert)[],
): Promise<void> {
  const rows = Array.isArray(values) ? values : [values];
  if (rows.length === 0) return;
  await db.insert(variant).values(rows).onConflictDoNothing();
}

export async function insertVariantPrice(
  db: DrizzleClient,
  values: typeof variantPrice.$inferInsert | (typeof variantPrice.$inferInsert)[],
): Promise<void> {
  const rows = Array.isArray(values) ? values : [values];
  if (rows.length === 0) return;
  await db.insert(variantPrice).values(rows).onConflictDoNothing();
}
