import type { Querier } from '@platform-modules/db'
import type { Actor, Order, OrderListFilter, OrdersSchema, Page } from '@platform-modules/commerce-orders'
import { listOrders } from '@platform-modules/commerce-orders'
import { requireVendorForActor } from './authz.js'
import type { MarketplaceDbSchema } from './schema.js'

export async function getVendorOrders(
  q: Querier<MarketplaceDbSchema>,
  actor: Actor,
  filter?: OrderListFilter,
): Promise<Page<Order>> {
  const v = await requireVendorForActor(q, actor)
  // A6: vendor-scoped read = vendorId ONLY. Do NOT spread `actor` — carrying
  // `userId` adds an OR buyer-branch (leaks the caller's own purchases into the
  // vendor view) and `isAdmin` would unscope it entirely. Spec: listOrders(actor{vendorId}).
  return listOrders(q as unknown as Querier<OrdersSchema>, { vendorId: v.id }, filter)
}
