@withpotter/cart — module reference
HTTP routes this module mounts, plus its internal use-cases, entities, and repositories. The exhaustive request/response contract is the engine’s OpenAPI document at /docs; the layered structure below follows the package internal architecture.
HTTP routes
Cart /cart
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /cart/admin/abandoned | Yes | List abandoned carts for the current tenant |
GET | /cart/admin/abandoned/stats | Yes | Get abandoned cart stats for the current tenant |
POST | /cart/items | — | Add an item to the active cart (creates if absent) |
POST | /cart/merge | Yes | Merge a guest session cart into the current member cart |
PATCH | /cart/items/:contentId | — | Update line quantity (0 removes the line) |
DELETE | /cart | — | Empty the active cart |
DELETE | /cart/items/:contentId | — | Remove a line from the active cart |
Internals
Use-cases
Application operations. Each is a single-purpose class with one execute() method.
| Use-case | Signature |
|---|---|
AddCartItemUseCase | execute(tenantId: string, dto: AddCartItemDto, sessionId?: string, memberId?: string): Promise<Cart> |
ClearCartUseCase | execute(tenantId: string, sessionId?: string, memberId?: string): Promise<Cart> |
GetAbandonedCartStatsUseCase | execute(tenantId: string) |
GetActiveCartUseCase | execute(tenantId: string, sessionId?: string, memberId?: string): Promise<Cart | null> |
GetOrCreateCartUseCase | execute(tenantId: string, sessionId?: string, memberId?: string): Promise<Cart> |
ListAbandonedCartsUseCase | execute(tenantId: string, options: { status?: 'pending' | 'recovered' | 'all'; page?: number; limit?: number; } = {}) |
MergeCartOnLoginUseCase | execute(tenantId: string, sessionId: string, memberId: string): Promise<Cart | null> |
RemoveCartItemUseCase | execute(tenantId: string, contentId: string, sessionId?: string, memberId?: string, variantId?: string, tierId?: string): Promise<Cart> |
UpdateCartItemQuantityUseCase | execute(tenantId: string, contentId: string, quantity: number, sessionId?: string, memberId?: string, variantId?: string, tierId?: string): Promise<Cart> |
Entities
Sequelize models owned by this module.
Cart — table carts
| Field | Type |
|---|---|
id | string |
tenantId | string |
tenant | Tenant |
memberId | string | null |
member | Member |
sessionId | string | null |
items | CartItem[] |
itemCount | number |
subtotal | number |
tax | number |
shipping | number |
currency | string |
data | Record<string, unknown> |
expiresAt | Date | null |
createdAt | Date |
updatedAt | Date |
Repositories
Data-access classes wrapping the entities.
CartRepository
findBySession · findByMember · findActiveCart · addItem · updateItemQuantity · removeItem · clearCart · mergeSessionToMember · deleteExpiredCarts · findAbandonedCartsByTenant · getAbandonedCartStats · markRecovered · findAbandonedCarts · markAbandonedEmailSent · deleteOldEmptyCarts
Generated from the module’s source. Routes are relative to the engine root
(default http://localhost:3001). For full request/response schemas use the live
OpenAPI document.