import {
  getProductById,
  getProductBySlug,
  listProducts,
  type CatalogFilter,
  type CatalogSchema,
} from '@platform-modules/commerce-catalog';
import type { Querier } from '@platform-modules/db';
import type { DrizzleDb } from '@/server/db/client';

export async function listCatalogProducts(
  db: DrizzleDb,
  filter: {
    audience: 'public' | 'admin';
    vendorId?: string;
    page?: number;
    category?: string;
    tag?: string;
    status?: string;
  },
) {
  return listProducts(db as unknown as Querier<CatalogSchema>, filter as CatalogFilter);
}

export async function getCatalogProductBySlug(
  db: DrizzleDb,
  slug: string,
  audience: 'public' | 'admin',
) {
  return getProductBySlug(db as unknown as Querier<CatalogSchema>, slug, { audience });
}

export async function getCatalogProductById(
  db: DrizzleDb,
  id: string,
  audience: 'public' | 'admin',
) {
  return getProductById(db as unknown as Querier<CatalogSchema>, id, { audience });
}
