import { Order } from "../aggregates/Order" import { OrderId } from "../value-objects/OrderId" import { UserId } from "../value-objects/UserId" /** * Order Repository Interface * * DDD Pattern: Repository * - Aggregate-oriented persistence * - Collection metaphor * - No business logic (that's in Order aggregate) */ export interface IOrderRepository { /** * Save order (create or update) */ save(order: Order): Promise /** * Find order by ID */ findById(id: OrderId): Promise /** * Find orders by user */ findByUserId(userId: UserId): Promise /** * Find orders by status */ findByStatus(status: string): Promise /** * Find all orders */ findAll(): Promise /** * Delete order */ delete(id: OrderId): Promise /** * Check if order exists */ exists(id: OrderId): Promise }