@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

MethodPathAuthDescription
GET/cart/admin/abandonedYesList abandoned carts for the current tenant
GET/cart/admin/abandoned/statsYesGet abandoned cart stats for the current tenant
POST/cart/itemsAdd an item to the active cart (creates if absent)
POST/cart/mergeYesMerge a guest session cart into the current member cart
PATCH/cart/items/:contentIdUpdate line quantity (0 removes the line)
DELETE/cartEmpty the active cart
DELETE/cart/items/:contentIdRemove a line from the active cart

Internals

Use-cases

Application operations. Each is a single-purpose class with one execute() method.

Use-caseSignature
AddCartItemUseCaseexecute(tenantId: string, dto: AddCartItemDto, sessionId?: string, memberId?: string): Promise<Cart>
ClearCartUseCaseexecute(tenantId: string, sessionId?: string, memberId?: string): Promise<Cart>
GetAbandonedCartStatsUseCaseexecute(tenantId: string)
GetActiveCartUseCaseexecute(tenantId: string, sessionId?: string, memberId?: string): Promise<Cart | null>
GetOrCreateCartUseCaseexecute(tenantId: string, sessionId?: string, memberId?: string): Promise<Cart>
ListAbandonedCartsUseCaseexecute(tenantId: string, options: { status?: 'pending' | 'recovered' | 'all'; page?: number; limit?: number; } = {})
MergeCartOnLoginUseCaseexecute(tenantId: string, sessionId: string, memberId: string): Promise<Cart | null>
RemoveCartItemUseCaseexecute(tenantId: string, contentId: string, sessionId?: string, memberId?: string, variantId?: string, tierId?: string): Promise<Cart>
UpdateCartItemQuantityUseCaseexecute(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

FieldType
idstring
tenantIdstring
tenantTenant
memberIdstring | null
memberMember
sessionIdstring | null
itemsCartItem[]
itemCountnumber
subtotalnumber
taxnumber
shippingnumber
currencystring
dataRecord<string, unknown>
expiresAtDate | null
createdAtDate
updatedAtDate

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.