refactor(wholesale): split monolithic wholesale.ts into focused modules
The wholesale action set was a single 887-line file mixing 8 distinct concerns: shared types, brand-scoping helpers, order CRUD, customer CRUD, product CRUD, settings, deposits, notifications, and webhooks. Split into a wholesale/ directory with one file per concern plus a barrel re-export for backwards compatibility. New structure: - wholesale/types.ts — type definitions (no "use server") - wholesale/scope.ts — resolveBrandId, enforceBrandScope helpers - wholesale/orders.ts — order CRUD + dashboard stats (127 lines) - wholesale/customers.ts — customer CRUD (94) - wholesale/products.ts — product CRUD (100) - wholesale/settings.ts — wholesale_settings + public read (86) - wholesale/deposits.ts — deposits + bulk actions (84) - wholesale/notifications.ts — email/SMS notification queue (88) - wholesale/webhooks.ts — outbound webhook settings + dispatch (90) - wholesale/index.ts — barrel re-export (77 lines) Each module is now under 155 lines and topically cohesive. Existing imports of `@/actions/wholesale` keep working unchanged because of the barrel. New code can import directly from the focused module to keep its dep graph smaller. Notable small cleanups inside the split: - Removed two private helpers that enqueued webhooks by calling the RPC directly; consolidated on the public enqueueWholesaleWebhook export from webhooks.ts so orders.ts and deposits.ts no longer need fire-and-forget duplication. - recordWholesaleDeposit now correctly accepts the brandId parameter (the original signature lacked it despite the docstring implying it). Verified: tsc clean, 175/175 tests pass, dev server still compiles all routes. /wholesale/portal returns 500 due to a pre-existing brand-scope.ts "server-only" issue in the Pages Router chain — not introduced by this commit.
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
* Barrel re-export for the wholesale action set.
|
||||
*
|
||||
* Source modules live next to this file:
|
||||
* - orders.ts — order CRUD + dashboard stats
|
||||
* - customers.ts — wholesale customer CRUD
|
||||
* - products.ts — wholesale product CRUD
|
||||
* - settings.ts — wholesale_settings + public read
|
||||
* - deposits.ts — deposit recording + bulk actions
|
||||
* - notifications.ts — email/SMS notification queue
|
||||
* - webhooks.ts — outbound webhook settings + dispatch
|
||||
* - scope.ts — brand-scoping helpers (resolveBrandId, enforceBrandScope)
|
||||
* - types.ts — shared type definitions
|
||||
*
|
||||
* Existing imports of `@/actions/wholesale` keep working. New code should
|
||||
* import directly from the focused modules to keep the dependency graph
|
||||
* tight.
|
||||
*/
|
||||
|
||||
export type {
|
||||
WholesaleOrder,
|
||||
WholesaleCustomer,
|
||||
WholesaleProduct,
|
||||
NotificationRecipient,
|
||||
WholesaleSettings,
|
||||
WholesaleDashboardStats,
|
||||
WholesaleNotification,
|
||||
WebhookSettings,
|
||||
} from "./types";
|
||||
|
||||
export { resolveBrandId, enforceBrandScope } from "./scope";
|
||||
|
||||
export {
|
||||
getWholesaleOrders,
|
||||
getWholesalePickupOrders,
|
||||
getWholesaleDashboardStats,
|
||||
markWholesaleOrderFulfilled,
|
||||
updateWholesaleOrderStatus,
|
||||
deleteWholesaleOrder,
|
||||
} from "./orders";
|
||||
|
||||
export {
|
||||
getWholesaleCustomers,
|
||||
saveWholesaleCustomer,
|
||||
deleteWholesaleCustomer,
|
||||
} from "./customers";
|
||||
|
||||
export {
|
||||
getWholesaleProducts,
|
||||
saveWholesaleProduct,
|
||||
deleteWholesaleProduct,
|
||||
} from "./products";
|
||||
|
||||
export {
|
||||
getWholesaleSettings,
|
||||
getWholesaleSettingsPublic,
|
||||
saveWholesaleSettings,
|
||||
} from "./settings";
|
||||
|
||||
export {
|
||||
recordWholesaleDeposit,
|
||||
bulkFulfillWholesaleOrders,
|
||||
bulkRecordWholesaleDeposit,
|
||||
} from "./deposits";
|
||||
|
||||
export {
|
||||
getWholesaleNotificationStats,
|
||||
getWholesalePendingNotifications,
|
||||
markWholesaleNotificationSent,
|
||||
enqueueWholesaleNotification,
|
||||
} from "./notifications";
|
||||
|
||||
export {
|
||||
getWebhookSettings,
|
||||
saveWebhookSettings,
|
||||
enqueueWholesaleWebhook,
|
||||
getRecentWebhookActivity,
|
||||
} from "./webhooks";
|
||||
Reference in New Issue
Block a user