cabloy 5.1.115 → 5.1.117

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/.cabloy-version +1 -1
  2. package/.claude/skills/cabloy-contract-loop/SKILL.md +8 -2
  3. package/.claude/skills/cabloy-contract-loop/evals/evals.json +6 -0
  4. package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +13 -0
  5. package/.claude/skills/cabloy-contract-loop/references/resource-custom-state-pattern.md +16 -3
  6. package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +12 -0
  7. package/.github/workflows/vona-test-mysql.yml +6 -10
  8. package/.github/workflows/vona-test-pg.yml +9 -10
  9. package/.github/workflows/vona-test-sqlite3.yml +3 -0
  10. package/CHANGELOG.md +35 -0
  11. package/CLAUDE.md +2 -0
  12. package/cabloy-docs/.vitepress/config.mjs +6 -0
  13. package/cabloy-docs/ai/docs-skills-rules-mapping.md +7 -0
  14. package/cabloy-docs/backend/aop-overview.md +16 -24
  15. package/cabloy-docs/backend/backend-source-reading-roadmap.md +26 -2
  16. package/cabloy-docs/backend/controller-aop-guide.md +38 -14
  17. package/cabloy-docs/backend/logger-guide.md +1 -0
  18. package/cabloy-docs/backend/menu-guide.md +1 -1
  19. package/cabloy-docs/backend/orm-mutation-guide.md +36 -10
  20. package/cabloy-docs/backend/orm-select-guide.md +15 -10
  21. package/cabloy-docs/backend/rate-limit-guide.md +97 -0
  22. package/cabloy-docs/backend/telemetry-guide.md +93 -0
  23. package/cabloy-docs/backend/vona-source-reading-map.md +44 -1
  24. package/cabloy-docs/frontend/model-resource-owner-pattern.md +2 -0
  25. package/cabloy-docs/frontend/ssr-overview.md +2 -0
  26. package/cabloy-docs/fullstack/admin-resource-and-web-self-service.md +329 -0
  27. package/cabloy-docs/fullstack/contract-loop-playbook.md +1 -1
  28. package/cabloy-docs/fullstack/introduction.md +1 -0
  29. package/e2e/specs/a-commerce/commerce.spec.ts +479 -1
  30. package/package.json +1 -1
  31. package/vona/packages-cli/cli/package.json +1 -1
  32. package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoBaseName%>.tsx_ +1 -1
  33. package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoMutateName%>.tsx_ +2 -2
  34. package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoResItemName%>.tsx_ +10 -10
  35. package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoViewName%>.tsx_ +2 -2
  36. package/vona/packages-cli/cli-set-api/package.json +1 -1
  37. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.tools.masterDetail.ts +13 -4
  38. package/vona/packages-vona/vona/package.json +1 -1
  39. package/vona/packages-vona/vona-core/package.json +1 -1
  40. package/vona/packages-vona/vona-core/src/lib/core/logger/utils.ts +12 -3
  41. package/vona/packages-vona/vona-mock/package.json +1 -1
  42. package/vona/pnpm-lock.yaml +237 -164
  43. package/vona/src/backend/config/config/config.ts +1 -0
  44. package/vona/src/suite/a-commerce/modules/commerce-catalog/test/sku.test.ts +1 -1
  45. package/vona/src/suite/a-commerce/modules/commerce-member/src/.metadata/index.ts +81 -25
  46. package/vona/src/suite/a-commerce/modules/commerce-member/src/bean/ssrMenu.address.ts +30 -0
  47. package/vona/src/suite/a-commerce/modules/commerce-member/src/controller/address.ts +42 -20
  48. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineCreate.tsx +35 -0
  49. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineItem.tsx +39 -0
  50. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineReq.tsx +11 -0
  51. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineRes.tsx +11 -0
  52. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineUpdate.tsx +10 -0
  53. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineView.tsx +10 -0
  54. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressSelectResItem.tsx +1 -7
  55. package/vona/src/suite/a-commerce/modules/commerce-member/src/service/address.ts +43 -42
  56. package/vona/src/suite/a-commerce/modules/commerce-member/test/addressOwnership.test.ts +168 -127
  57. package/vona/src/suite/a-commerce/modules/commerce-payment/src/.metadata/index.ts +76 -3
  58. package/vona/src/suite/a-commerce/modules/commerce-payment/src/bean/meta.index.ts +3 -0
  59. package/vona/src/suite/a-commerce/modules/commerce-payment/src/bean/meta.version.ts +37 -0
  60. package/vona/src/suite/a-commerce/modules/commerce-payment/src/dto/paymentAttemptView.tsx +2 -2
  61. package/vona/src/suite/a-commerce/modules/commerce-payment/src/entity/paymentAttempt.tsx +5 -2
  62. package/vona/src/suite/a-commerce/modules/commerce-payment/src/entity/paymentAudit.tsx +54 -0
  63. package/vona/src/suite/a-commerce/modules/commerce-payment/src/model/paymentAudit.ts +10 -0
  64. package/vona/src/suite/a-commerce/modules/commerce-payment/src/service/mockPaymentAdapter.ts +18 -0
  65. package/vona/src/suite/a-commerce/modules/commerce-payment/src/service/paymentAttempt.ts +22 -7
  66. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/dto/couponIssue.tsx +1 -1
  67. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/service/coupon.ts +6 -1
  68. package/vona/src/suite/a-commerce/modules/commerce-promotion/test/couponReservation.test.ts +480 -8
  69. package/vona/src/suite/a-commerce/modules/commerce-siteadmin/test/ssrMenu.test.ts +14 -0
  70. package/vona/src/suite/a-commerce/modules/commerce-trade/src/.metadata/index.ts +309 -3
  71. package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/meta.index.ts +2 -0
  72. package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/meta.version.ts +16 -0
  73. package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/ssrMenu.order.ts +30 -0
  74. package/vona/src/suite/a-commerce/modules/commerce-trade/src/controller/order.ts +69 -0
  75. package/vona/src/suite/a-commerce/modules/commerce-trade/src/controller/payment.ts +23 -0
  76. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/checkoutResult.tsx +4 -4
  77. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderDetail.tsx +72 -0
  78. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderMineReq.tsx +21 -0
  79. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderMineRes.tsx +11 -0
  80. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderSelectReq.tsx +25 -0
  81. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderSelectRes.tsx +11 -0
  82. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderSelectResItem.tsx +38 -0
  83. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderShip.tsx +15 -0
  84. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderSummary.tsx +26 -0
  85. package/vona/src/suite/a-commerce/modules/{commerce-member/src/dto/addressCreate.tsx → commerce-trade/src/dto/orderView.tsx} +5 -17
  86. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/paymentOutcomeCreate.tsx +16 -0
  87. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/paymentOutcomeResult.tsx +29 -0
  88. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/shipmentView.tsx +22 -0
  89. package/vona/src/suite/a-commerce/modules/commerce-trade/src/entity/orderAudit.tsx +13 -7
  90. package/vona/src/suite/a-commerce/modules/commerce-trade/src/entity/shipment.tsx +28 -0
  91. package/vona/src/suite/a-commerce/modules/commerce-trade/src/model/order.ts +1 -0
  92. package/vona/src/suite/a-commerce/modules/commerce-trade/src/model/shipment.ts +10 -0
  93. package/vona/src/suite/a-commerce/modules/commerce-trade/src/service/cart.ts +14 -0
  94. package/vona/src/suite/a-commerce/modules/commerce-trade/src/service/order.ts +436 -34
  95. package/vona/src/suite/a-commerce/modules/commerce-trade/src/service/stockBalance.ts +4 -3
  96. package/vona/src/suite/a-commerce/modules/commerce-trade/test/cartOwnership.test.ts +160 -80
  97. package/vona/src/suite/a-commerce/modules/commerce-trade/test/checkoutReservation.test.ts +773 -2
  98. package/vona/src/suite/a-commerce/modules/commerce-trade/test/checkoutTransaction.test.ts +212 -0
  99. package/vona/src/suite/a-commerce/modules/commerce-trade/test/order.test.ts +37 -0
  100. package/vona/src/suite/a-commerce/modules/commerce-trade/test/orderSnapshot.test.ts +29 -5
  101. package/vona/src/suite/a-commerce/modules/commerce-trade/test/paymentOutcome.test.ts +714 -0
  102. package/vona/src/suite/a-commerce/modules/commerce-trade/test/reservationExpiry.test.ts +282 -9
  103. package/vona/src/suite/a-commerce/modules/commerce-trade/test/shipment.test.ts +260 -0
  104. package/vona/src/suite/a-commerce/modules/commerce-trade/test/stockBalance.test.ts +15 -1
  105. package/vona/src/suite/a-commerce/modules/commerce-trade/test/stockReservation.test.ts +20 -2
  106. package/vona/src/suite/a-commerce/modules/commerce-trade/test/testLock.ts +11 -0
  107. package/vona/src/suite/a-home/modules/home-user/src/.metadata/index.ts +21 -0
  108. package/vona/src/suite/a-home/modules/home-user/src/controller/passportTest.ts +21 -0
  109. package/vona/src/suite/a-home/modules/home-user/test/passportTest.test.ts +77 -0
  110. package/vona/src/suite-vendor/a-vona/modules/a-broadcast/package.json +2 -1
  111. package/vona/src/suite-vendor/a-vona/modules/a-broadcast/src/service/broadcast.ts +84 -23
  112. package/vona/src/suite-vendor/a-vona/modules/a-broadcast/src/types/broadcast.ts +7 -1
  113. package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
  114. package/vona/src/suite-vendor/a-vona/modules/a-core/src/lib/core.ts +8 -0
  115. package/vona/src/suite-vendor/a-vona/modules/a-executor/package.json +4 -2
  116. package/vona/src/suite-vendor/a-vona/modules/a-executor/src/service/executor.ts +68 -53
  117. package/vona/src/suite-vendor/a-vona/modules/a-orm/cli/model/metadata/generate.ts +10 -0
  118. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
  119. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/bean.model/bean.model_cache.ts +12 -0
  120. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/bean.model/bean.model_crud_inner.ts +3 -0
  121. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/bean.model/bean.model_utils.ts +1 -1
  122. package/vona/src/suite-vendor/a-vona/modules/a-queue/package.json +4 -2
  123. package/vona/src/suite-vendor/a-vona/modules/a-queue/src/service/queue.ts +103 -54
  124. package/vona/src/suite-vendor/a-vona/modules/a-queue/src/types/queue.ts +5 -0
  125. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/package.json +48 -0
  126. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/.metadata/index.ts +100 -0
  127. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/.metadata/this.ts +2 -0
  128. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/bean/interceptor.rateLimit.ts +72 -0
  129. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/index.ts +2 -0
  130. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/main.ts +28 -0
  131. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/service/rateLimit.ts +75 -0
  132. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/types/index.ts +1 -0
  133. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/types/rateLimit.ts +19 -0
  134. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/tsconfig.build.json +11 -0
  135. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/tsconfig.json +7 -0
  136. package/vona/src/suite-vendor/a-vona/modules/a-redis/package.json +1 -1
  137. package/vona/src/suite-vendor/a-vona/modules/a-redis/src/service/redis.ts +1 -2
  138. package/vona/src/suite-vendor/a-vona/modules/a-redis/src/types/redis.ts +1 -0
  139. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/package.json +63 -0
  140. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/.metadata/index.ts +132 -0
  141. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/.metadata/this.ts +2 -0
  142. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/bean/bean.telemetry.ts +71 -0
  143. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/bean/middlewareSystem.trace.ts +73 -0
  144. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/config/config.ts +83 -0
  145. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/index.ts +2 -0
  146. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/lib/ingress.ts +34 -0
  147. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/monkey.ts +22 -0
  148. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/service/telemetry.ts +201 -0
  149. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/types/index.ts +1 -0
  150. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/types/telemetry.ts +22 -0
  151. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/test/telemetry.test.ts +339 -0
  152. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/tsconfig.build.json +11 -0
  153. package/vona/src/suite-vendor/a-vona/modules/a-telemetry/tsconfig.json +7 -0
  154. package/vona/src/suite-vendor/a-vona/package.json +3 -1
  155. package/vona/src/suite-vendor/a-vona/tsconfig.json +3 -0
  156. package/zova/package.original.json +1 -1
  157. package/zova/packages-cli/cli/package.json +2 -2
  158. package/zova/packages-cli/cli-set-front/package.json +1 -1
  159. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.bin.buildRest.ts +3 -2
  160. package/zova/packages-zova/zova/package.json +2 -2
  161. package/zova/pnpm-lock.yaml +87 -127
  162. package/zova/src/front/config/config/config.cabloyCommerce.ts +4 -0
  163. package/zova/src/suite/a-commerce/modules/commerce-member/cli/openapi.config.ts +9 -1
  164. package/zova/src/suite/a-commerce/modules/commerce-member/src/.metadata/index.ts +16 -0
  165. package/zova/src/suite/a-commerce/modules/commerce-member/src/api/commerceMemberAddress.ts +94 -50
  166. package/zova/src/suite/a-commerce/modules/commerce-member/src/api/openapi/schemas.ts +162 -52
  167. package/zova/src/suite/a-commerce/modules/commerce-member/src/api/openapi/types.ts +2656 -1298
  168. package/zova/src/suite/a-commerce/modules/commerce-member/src/apiSchema/commerceMemberAddress.ts +23 -13
  169. package/zova/src/suite/a-commerce/modules/commerce-member/src/model/addressMine.ts +67 -0
  170. package/zova/src/suite/a-commerce/modules/commerce-member/src/page/address/controller.tsx +21 -11
  171. package/zova/src/suite/a-commerce/modules/commerce-promotion/src/api/openapi/schemas.ts +40 -32
  172. package/zova/src/suite/a-commerce/modules/commerce-promotion/src/api/openapi/types.ts +638 -633
  173. package/zova/src/suite/a-commerce/modules/commerce-trade/cli/openapi.config.ts +6 -0
  174. package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/component/tableCellActionShip.ts +31 -0
  175. package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/index.ts +248 -1
  176. package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/page/checkout.ts +19 -0
  177. package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/page/order.ts +19 -0
  178. package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/page/orders.ts +19 -0
  179. package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/page/payment.ts +19 -0
  180. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/commerceTradeOrder.ts +114 -0
  181. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/commerceTradePayment.ts +36 -0
  182. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/openapi/schemas.ts +75 -8
  183. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/openapi/types.ts +762 -46
  184. package/zova/src/suite/a-commerce/modules/commerce-trade/src/apiSchema/commerceTradeOrder.ts +35 -0
  185. package/zova/src/suite/a-commerce/modules/commerce-trade/src/apiSchema/commerceTradePayment.ts +13 -0
  186. package/zova/src/suite/a-commerce/modules/commerce-trade/src/bean/tableCell.actionShip.tsx +41 -0
  187. package/zova/src/suite/a-commerce/modules/commerce-trade/src/component/tableCellActionShip/controller.tsx +66 -0
  188. package/zova/src/suite/a-commerce/modules/commerce-trade/src/config/locale/en-us.ts +2 -0
  189. package/zova/src/suite/a-commerce/modules/commerce-trade/src/config/locale/zh-cn.ts +2 -0
  190. package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/order.ts +38 -0
  191. package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/orderMine.ts +31 -0
  192. package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/payment.ts +25 -0
  193. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/cart/controller.tsx +14 -3
  194. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/checkout/controller.tsx +124 -0
  195. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/order/controller.tsx +105 -0
  196. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/orders/controller.tsx +95 -0
  197. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/payment/controller.tsx +88 -0
  198. package/zova/src/suite/a-commerce/modules/commerce-trade/src/routes.ts +28 -0
  199. package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/command.delete.tsx +3 -2
  200. package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/tableCell.actionUpdate.tsx +2 -1
  201. package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/tableCell.actionView.tsx +1 -1
  202. package/zova/src/suite/cabloy-basic/modules/basic-details/src/config/locale/en-us.ts +1 -0
  203. package/zova/src/suite/cabloy-basic/modules/basic-details/src/config/locale/zh-cn.ts +1 -0
  204. package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
  205. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssr.ts +4 -0
  206. package/zova/src/suite-vendor/a-zova/package.json +2 -2
  207. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressUpdate.tsx +0 -39
@@ -111,10 +111,6 @@ declare module 'vona-module-commerce-member' {
111
111
  getById<T extends IModelGetOptions<EntityAddress,ModelAddress>>(id: TableIdentity, options?: T): Promise<TypeModelRelationResult<EntityAddress, ModelAddress, T> | undefined>;
112
112
  updateById<T extends IModelUpdateOptions<EntityAddress,ModelAddress>>(id: TableIdentity, data: TypeModelMutateRelationData<EntityAddress,ModelAddress, T>, options?: T): Promise<TypeModelMutateRelationData<EntityAddress,ModelAddress, T>>;
113
113
  deleteById<T extends IModelDeleteOptions<EntityAddress,ModelAddress>>(id: TableIdentity, options?: T): Promise<void>;
114
- getByName<T extends IModelGetOptions<EntityAddress,ModelAddress>>(name?: string, options?: T): Promise<TypeModelRelationResult<EntityAddress, ModelAddress, T> | undefined>;
115
- getByNameEqI<T extends IModelGetOptions<EntityAddress,ModelAddress>>(name?: string, options?: T): Promise<TypeModelRelationResult<EntityAddress, ModelAddress, T> | undefined>;
116
- selectByName<T extends IModelSelectParams<EntityAddress,ModelAddress,ModelJoins>, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined>(name?: string, params?: T, options?: IModelMethodOptions, modelJoins?: ModelJoins): Promise<TypeModelRelationResult<EntityAddress, ModelAddress, T>[]>;
117
- selectByNameEqI<T extends IModelSelectParams<EntityAddress,ModelAddress,ModelJoins>, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined>(name?: string, params?: T, options?: IModelMethodOptions, modelJoins?: ModelJoins): Promise<TypeModelRelationResult<EntityAddress, ModelAddress, T>[]>;
118
114
  }
119
115
  }
120
116
  declare module 'vona-module-a-orm' {
@@ -204,27 +200,39 @@ declare module 'vona-module-commerce-member' {
204
200
  }
205
201
  /** meta: end */
206
202
  /** dto: begin */
207
- export * from '../dto/addressCreate.tsx';
203
+ export * from '../dto/addressMineCreate.tsx';
204
+ export * from '../dto/addressMineItem.tsx';
205
+ export * from '../dto/addressMineReq.tsx';
206
+ export * from '../dto/addressMineRes.tsx';
207
+ export * from '../dto/addressMineUpdate.tsx';
208
+ export * from '../dto/addressMineView.tsx';
208
209
  export * from '../dto/addressSelectReq.tsx';
209
210
  export * from '../dto/addressSelectRes.tsx';
210
211
  export * from '../dto/addressSelectResItem.tsx';
211
- export * from '../dto/addressUpdate.tsx';
212
212
  export * from '../dto/addressView.tsx';
213
- import type { IDtoOptionsAddressCreate } from '../dto/addressCreate.tsx';
213
+ import type { IDtoOptionsAddressMineCreate } from '../dto/addressMineCreate.tsx';
214
+ import type { IDtoOptionsAddressMineItem } from '../dto/addressMineItem.tsx';
215
+ import type { IDtoOptionsAddressMineReq } from '../dto/addressMineReq.tsx';
216
+ import type { IDtoOptionsAddressMineRes } from '../dto/addressMineRes.tsx';
217
+ import type { IDtoOptionsAddressMineUpdate } from '../dto/addressMineUpdate.tsx';
218
+ import type { IDtoOptionsAddressMineView } from '../dto/addressMineView.tsx';
214
219
  import type { IDtoOptionsAddressSelectReq } from '../dto/addressSelectReq.tsx';
215
220
  import type { IDtoOptionsAddressSelectRes } from '../dto/addressSelectRes.tsx';
216
221
  import type { IDtoOptionsAddressSelectResItem } from '../dto/addressSelectResItem.tsx';
217
- import type { IDtoOptionsAddressUpdate } from '../dto/addressUpdate.tsx';
218
222
  import type { IDtoOptionsAddressView } from '../dto/addressView.tsx';
219
223
  import 'vona-module-a-web';
220
224
  declare module 'vona-module-a-web' {
221
225
 
222
226
  export interface IDtoRecord {
223
- 'commerce-member:addressCreate': IDtoOptionsAddressCreate;
227
+ 'commerce-member:addressMineCreate': IDtoOptionsAddressMineCreate;
228
+ 'commerce-member:addressMineItem': IDtoOptionsAddressMineItem;
229
+ 'commerce-member:addressMineReq': IDtoOptionsAddressMineReq;
230
+ 'commerce-member:addressMineRes': IDtoOptionsAddressMineRes;
231
+ 'commerce-member:addressMineUpdate': IDtoOptionsAddressMineUpdate;
232
+ 'commerce-member:addressMineView': IDtoOptionsAddressMineView;
224
233
  'commerce-member:addressSelectReq': IDtoOptionsAddressSelectReq;
225
234
  'commerce-member:addressSelectRes': IDtoOptionsAddressSelectRes;
226
235
  'commerce-member:addressSelectResItem': IDtoOptionsAddressSelectResItem;
227
- 'commerce-member:addressUpdate': IDtoOptionsAddressUpdate;
228
236
  'commerce-member:addressView': IDtoOptionsAddressView;
229
237
  }
230
238
 
@@ -235,16 +243,40 @@ declare module 'vona-module-commerce-member' {
235
243
  }
236
244
  /** dto: end */
237
245
  /** dto: begin */
238
- import type { DtoAddressCreate } from '../dto/addressCreate.tsx';
246
+ import type { DtoAddressMineCreate } from '../dto/addressMineCreate.tsx';
247
+ import type { DtoAddressMineItem } from '../dto/addressMineItem.tsx';
248
+ import type { DtoAddressMineReq } from '../dto/addressMineReq.tsx';
249
+ import type { DtoAddressMineRes } from '../dto/addressMineRes.tsx';
250
+ import type { DtoAddressMineUpdate } from '../dto/addressMineUpdate.tsx';
251
+ import type { DtoAddressMineView } from '../dto/addressMineView.tsx';
239
252
  import type { DtoAddressSelectReq } from '../dto/addressSelectReq.tsx';
240
253
  import type { DtoAddressSelectRes } from '../dto/addressSelectRes.tsx';
241
254
  import type { DtoAddressSelectResItem } from '../dto/addressSelectResItem.tsx';
242
- import type { DtoAddressUpdate } from '../dto/addressUpdate.tsx';
243
255
  import type { DtoAddressView } from '../dto/addressView.tsx';
244
256
  declare module 'vona-module-commerce-member' {
245
257
 
246
- export interface IDtoOptionsAddressCreate {
247
- fields?: TypeEntityOptionsFields<DtoAddressCreate, IDtoOptionsAddressCreate[TypeSymbolKeyFieldsMore]>;
258
+ export interface IDtoOptionsAddressMineCreate {
259
+ fields?: TypeEntityOptionsFields<DtoAddressMineCreate, IDtoOptionsAddressMineCreate[TypeSymbolKeyFieldsMore]>;
260
+ }
261
+
262
+ export interface IDtoOptionsAddressMineItem {
263
+ fields?: TypeEntityOptionsFields<DtoAddressMineItem, IDtoOptionsAddressMineItem[TypeSymbolKeyFieldsMore]>;
264
+ }
265
+
266
+ export interface IDtoOptionsAddressMineReq {
267
+ fields?: TypeEntityOptionsFields<DtoAddressMineReq, IDtoOptionsAddressMineReq[TypeSymbolKeyFieldsMore]>;
268
+ }
269
+
270
+ export interface IDtoOptionsAddressMineRes {
271
+ fields?: TypeEntityOptionsFields<DtoAddressMineRes, IDtoOptionsAddressMineRes[TypeSymbolKeyFieldsMore]>;
272
+ }
273
+
274
+ export interface IDtoOptionsAddressMineUpdate {
275
+ fields?: TypeEntityOptionsFields<DtoAddressMineUpdate, IDtoOptionsAddressMineUpdate[TypeSymbolKeyFieldsMore]>;
276
+ }
277
+
278
+ export interface IDtoOptionsAddressMineView {
279
+ fields?: TypeEntityOptionsFields<DtoAddressMineView, IDtoOptionsAddressMineView[TypeSymbolKeyFieldsMore]>;
248
280
  }
249
281
 
250
282
  export interface IDtoOptionsAddressSelectReq {
@@ -259,10 +291,6 @@ declare module 'vona-module-commerce-member' {
259
291
  fields?: TypeEntityOptionsFields<DtoAddressSelectResItem, IDtoOptionsAddressSelectResItem[TypeSymbolKeyFieldsMore]>;
260
292
  }
261
293
 
262
- export interface IDtoOptionsAddressUpdate {
263
- fields?: TypeEntityOptionsFields<DtoAddressUpdate, IDtoOptionsAddressUpdate[TypeSymbolKeyFieldsMore]>;
264
- }
265
-
266
294
  export interface IDtoOptionsAddressView {
267
295
  fields?: TypeEntityOptionsFields<DtoAddressView, IDtoOptionsAddressView[TypeSymbolKeyFieldsMore]>;
268
296
  }
@@ -304,18 +332,20 @@ declare module 'vona-module-commerce-member' {
304
332
  }
305
333
  }
306
334
  declare module 'vona-module-a-web' {
307
- export interface IApiPathPostRecord{
308
- '/commerce/member/address': undefined;
309
- }
310
- export interface IApiPathGetRecord{
311
- '/commerce/member/address': undefined;
335
+ export interface IApiPathGetRecord{
336
+ '/commerce/member/address/mine': undefined;
337
+ '/commerce/member/address/viewMine/:id': undefined;
338
+ '/commerce/member/address': undefined;
312
339
  '/commerce/member/address/:id': undefined;
313
340
  }
341
+ export interface IApiPathPostRecord{
342
+ '/commerce/member/address/createMine': undefined;
343
+ }
314
344
  export interface IApiPathPatchRecord{
315
- '/commerce/member/address/:id': undefined;
345
+ '/commerce/member/address/updateMine/:id': undefined;
316
346
  }
317
347
  export interface IApiPathDeleteRecord{
318
- '/commerce/member/address/:id': undefined;
348
+ '/commerce/member/address/deleteMine/:id': undefined;
319
349
  }
320
350
 
321
351
  }
@@ -327,6 +357,32 @@ import 'vona-module-a-openapi';
327
357
  }
328
358
 
329
359
  /** controller: end */
360
+ /** ssrMenu: begin */
361
+ export * from '../bean/ssrMenu.address.ts';
362
+ import type { ISsrMenuOptionsAddress } from '../bean/ssrMenu.address.ts';
363
+ import 'vona-module-a-ssr';
364
+ declare module 'vona-module-a-ssr' {
365
+
366
+ export interface ISsrMenuRecord {
367
+ 'commerce-member:address': ISsrMenuOptionsAddress;
368
+ }
369
+
370
+
371
+ }
372
+ declare module 'vona-module-commerce-member' {
373
+
374
+ export interface SsrMenuAddress {
375
+ /** @internal */
376
+ get scope(): ScopeModuleCommerceMember;
377
+ }
378
+
379
+ export interface SsrMenuAddress {
380
+ get $beanFullName(): 'commerce-member.ssrMenu.address';
381
+ get $onionName(): 'commerce-member:address';
382
+ get $onionOptions(): ISsrMenuOptionsAddress;
383
+ }
384
+ }
385
+ /** ssrMenu: end */
330
386
  /** locale: begin */
331
387
  import { locales } from './locales.ts';
332
388
  /** locale: end */
@@ -0,0 +1,30 @@
1
+ import type { IDecoratorSsrMenuOptions } from 'vona-module-a-ssr';
2
+ import type { ISsrSiteOptionsCommerceAdmin } from 'vona-module-commerce-siteadmin';
3
+
4
+ import { BeanBase } from 'vona';
5
+ import { $order } from 'vona-module-a-openapiutils';
6
+ import { SsrMenu } from 'vona-module-a-ssr';
7
+
8
+ import { $locale } from '../.metadata/locales.ts';
9
+
10
+ export interface ISsrMenuOptionsAddress extends IDecoratorSsrMenuOptions<ISsrSiteOptionsCommerceAdmin> {}
11
+
12
+ @SsrMenu<ISsrMenuOptionsAddress>({
13
+ items: {
14
+ address: {
15
+ title: $locale('Address'),
16
+ order: $order(3),
17
+ icon: undefined,
18
+ link: 'presetResource',
19
+ meta: {
20
+ params: {
21
+ resource: 'commerce-member:address',
22
+ },
23
+ },
24
+ group: 'commerce-siteadmin:catalog',
25
+ roles: ['systemAdmin'],
26
+ },
27
+ },
28
+ site: ['commerce-siteadmin:commerceAdmin'],
29
+ })
30
+ export class SsrMenuAddress extends BeanBase {}
@@ -4,15 +4,19 @@ import type { IDecoratorControllerOptions } from 'vona-module-a-web';
4
4
 
5
5
  import { BeanBase } from 'vona';
6
6
  import { Api, Resource, v } from 'vona-module-a-openapiutils';
7
+ import { Passport } from 'vona-module-a-user';
7
8
  import { Arg, Controller, Web } from 'vona-module-a-web';
8
9
  import { z } from 'zod';
9
10
 
10
11
  import type { ModelAddress } from '../model/address.ts';
11
12
 
12
- import { DtoAddressCreate } from '../dto/addressCreate.tsx';
13
+ import { DtoAddressMineCreate } from '../dto/addressMineCreate.tsx';
14
+ import { DtoAddressMineReq } from '../dto/addressMineReq.tsx';
15
+ import { DtoAddressMineRes } from '../dto/addressMineRes.tsx';
16
+ import { DtoAddressMineUpdate } from '../dto/addressMineUpdate.tsx';
17
+ import { DtoAddressMineView } from '../dto/addressMineView.tsx';
13
18
  import { DtoAddressSelectReq } from '../dto/addressSelectReq.tsx';
14
19
  import { DtoAddressSelectRes } from '../dto/addressSelectRes.tsx';
15
- import { DtoAddressUpdate } from '../dto/addressUpdate.tsx';
16
20
  import { DtoAddressView } from '../dto/addressView.tsx';
17
21
 
18
22
  export interface IControllerOptionsAddress extends IDecoratorControllerOptions {}
@@ -20,14 +24,46 @@ export interface IControllerOptionsAddress extends IDecoratorControllerOptions {
20
24
  @Controller<IControllerOptionsAddress>('address')
21
25
  @Resource()
22
26
  export class ControllerAddress extends BeanBase {
23
- @Web.post()
27
+ @Web.get('mine')
28
+ @Api.body(DtoAddressMineRes)
29
+ async mine(
30
+ @Arg.filter(DtoAddressMineReq) params: IQueryParams<ModelAddress>,
31
+ ): Promise<DtoAddressMineRes> {
32
+ return await this.scope.service.address.mine(params);
33
+ }
34
+
35
+ @Web.get('viewMine/:id')
36
+ @Api.body(v.optional(), v.object(DtoAddressMineView))
37
+ async viewMine(
38
+ @Arg.param('id', v.tableIdentity()) id: TableIdentity,
39
+ ): Promise<DtoAddressMineView | undefined> {
40
+ return await this.scope.service.address.viewMine(id);
41
+ }
42
+
43
+ @Web.post('createMine')
24
44
  @Api.body(v.tableIdentity())
25
- async create(@Arg.body() address: DtoAddressCreate): Promise<TableIdentity> {
26
- return (await this.scope.service.address.create(address)).id;
45
+ async createMine(@Arg.body() address: DtoAddressMineCreate): Promise<TableIdentity> {
46
+ return (await this.scope.service.address.createMine(address)).id;
47
+ }
48
+
49
+ @Web.patch('updateMine/:id')
50
+ @Api.body(z.null())
51
+ async updateMine(
52
+ @Arg.param('id', v.tableIdentity()) id: TableIdentity,
53
+ @Arg.body() address: DtoAddressMineUpdate,
54
+ ): Promise<void> {
55
+ await this.scope.service.address.updateMine(id, address);
56
+ }
57
+
58
+ @Web.delete('deleteMine/:id')
59
+ @Api.body(z.null())
60
+ async deleteMine(@Arg.param('id', v.tableIdentity()) id: TableIdentity): Promise<void> {
61
+ await this.scope.service.address.deleteMine(id);
27
62
  }
28
63
 
29
64
  @Web.get()
30
65
  @Api.body(DtoAddressSelectRes)
66
+ @Passport.systemAdmin()
31
67
  async select(
32
68
  @Arg.filter(DtoAddressSelectReq) params: IQueryParams<ModelAddress>,
33
69
  ): Promise<DtoAddressSelectRes> {
@@ -36,24 +72,10 @@ export class ControllerAddress extends BeanBase {
36
72
 
37
73
  @Web.get(':id')
38
74
  @Api.body(v.optional(), v.object(DtoAddressView))
75
+ @Passport.systemAdmin()
39
76
  async view(
40
77
  @Arg.param('id', v.tableIdentity()) id: TableIdentity,
41
78
  ): Promise<DtoAddressView | undefined> {
42
79
  return await this.scope.service.address.view(id);
43
80
  }
44
-
45
- @Web.patch(':id')
46
- @Api.body(z.null())
47
- async update(
48
- @Arg.param('id', v.tableIdentity()) id: TableIdentity,
49
- @Arg.body() address: DtoAddressUpdate,
50
- ): Promise<void> {
51
- await this.scope.service.address.update(id, address);
52
- }
53
-
54
- @Web.delete(':id')
55
- @Api.body(z.null())
56
- async delete(@Arg.param('id', v.tableIdentity()) id: TableIdentity): Promise<void> {
57
- await this.scope.service.address.delete(id);
58
- }
59
81
  }
@@ -0,0 +1,35 @@
1
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
+
3
+ import { Api, v } from 'vona-module-a-openapiutils';
4
+ import { Dto } from 'vona-module-a-web';
5
+
6
+ import { $locale } from '../.metadata/locales.ts';
7
+
8
+ export interface IDtoOptionsAddressMineCreate extends IDecoratorDtoOptions {}
9
+
10
+ @Dto<IDtoOptionsAddressMineCreate>()
11
+ export class DtoAddressMineCreate {
12
+ @Api.field(v.title($locale('RecipientName')), v.required(), v.min(2), v.max(100))
13
+ recipientName: string;
14
+
15
+ @Api.field(v.title($locale('Phone')), v.required(), v.min(1), v.max(50))
16
+ phone: string;
17
+
18
+ @Api.field(v.title($locale('CountryCode')), v.required(), v.min(2), v.max(10))
19
+ countryCode: string;
20
+
21
+ @Api.field(v.title($locale('Region')), v.required(), v.min(1), v.max(100))
22
+ region: string;
23
+
24
+ @Api.field(v.title($locale('City')), v.required(), v.min(1), v.max(100))
25
+ city: string;
26
+
27
+ @Api.field(v.title($locale('PostalCode')), v.required(), v.min(1), v.max(30))
28
+ postalCode: string;
29
+
30
+ @Api.field(v.title($locale('AddressLine1')), v.required(), v.min(1), v.max(255))
31
+ addressLine1: string;
32
+
33
+ @Api.field(v.title($locale('AddressLine2')), v.optional(), v.max(255))
34
+ addressLine2?: string;
35
+ }
@@ -0,0 +1,39 @@
1
+ import type { TableIdentity } from 'table-identity';
2
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
3
+
4
+ import { Api, v } from 'vona-module-a-openapiutils';
5
+ import { Dto } from 'vona-module-a-web';
6
+
7
+ import { $locale } from '../.metadata/locales.ts';
8
+
9
+ export interface IDtoOptionsAddressMineItem extends IDecoratorDtoOptions {}
10
+
11
+ @Dto<IDtoOptionsAddressMineItem>()
12
+ export class DtoAddressMineItem {
13
+ @Api.field(v.tableIdentity())
14
+ id: TableIdentity;
15
+
16
+ @Api.field(v.title($locale('RecipientName')), v.required(), v.min(2), v.max(100))
17
+ recipientName: string;
18
+
19
+ @Api.field(v.title($locale('Phone')), v.required(), v.min(1), v.max(50))
20
+ phone: string;
21
+
22
+ @Api.field(v.title($locale('CountryCode')), v.required(), v.min(2), v.max(10))
23
+ countryCode: string;
24
+
25
+ @Api.field(v.title($locale('Region')), v.required(), v.min(1), v.max(100))
26
+ region: string;
27
+
28
+ @Api.field(v.title($locale('City')), v.required(), v.min(1), v.max(100))
29
+ city: string;
30
+
31
+ @Api.field(v.title($locale('PostalCode')), v.required(), v.min(1), v.max(30))
32
+ postalCode: string;
33
+
34
+ @Api.field(v.title($locale('AddressLine1')), v.required(), v.min(1), v.max(255))
35
+ addressLine1: string;
36
+
37
+ @Api.field(v.title($locale('AddressLine2')), v.optional(), v.max(255))
38
+ addressLine2?: string;
39
+ }
@@ -0,0 +1,11 @@
1
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
+
3
+ import { $Dto } from 'vona-module-a-orm';
4
+ import { Dto } from 'vona-module-a-web';
5
+
6
+ import { EntityAddress } from '../entity/address.tsx';
7
+
8
+ export interface IDtoOptionsAddressMineReq extends IDecoratorDtoOptions {}
9
+
10
+ @Dto<IDtoOptionsAddressMineReq>()
11
+ export class DtoAddressMineReq extends $Dto.queryPage(EntityAddress, []) {}
@@ -0,0 +1,11 @@
1
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
+
3
+ import { $Dto } from 'vona-module-a-orm';
4
+ import { Dto } from 'vona-module-a-web';
5
+
6
+ import { DtoAddressMineItem } from './addressMineItem.tsx';
7
+
8
+ export interface IDtoOptionsAddressMineRes extends IDecoratorDtoOptions {}
9
+
10
+ @Dto<IDtoOptionsAddressMineRes>()
11
+ export class DtoAddressMineRes extends $Dto.listAndCount(DtoAddressMineItem) {}
@@ -0,0 +1,10 @@
1
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
+
3
+ import { Dto } from 'vona-module-a-web';
4
+
5
+ import { DtoAddressMineCreate } from './addressMineCreate.tsx';
6
+
7
+ export interface IDtoOptionsAddressMineUpdate extends IDecoratorDtoOptions {}
8
+
9
+ @Dto<IDtoOptionsAddressMineUpdate>()
10
+ export class DtoAddressMineUpdate extends DtoAddressMineCreate {}
@@ -0,0 +1,10 @@
1
+ import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
+
3
+ import { Dto } from 'vona-module-a-web';
4
+
5
+ import { DtoAddressMineItem } from './addressMineItem.tsx';
6
+
7
+ export interface IDtoOptionsAddressMineView extends IDecoratorDtoOptions {}
8
+
9
+ @Dto<IDtoOptionsAddressMineView>()
10
+ export class DtoAddressMineView extends DtoAddressMineItem {}
@@ -15,9 +15,6 @@ export interface IDtoOptionsAddressSelectResItem extends IDecoratorDtoOptions {}
15
15
  ZovaRender.block('basic-page:blockPage', {
16
16
  blocks: [
17
17
  ZovaRender.block('basic-page:blockFilter'),
18
- ZovaRender.block('basic-page:blockToolbarBulk', {
19
- actions: [ZovaRender.tableActionBulk('basic-table:actionCreate')],
20
- }),
21
18
  ZovaRender.block('basic-page:blockTable'),
22
19
  ZovaRender.block('basic-page:blockPager'),
23
20
  ],
@@ -43,10 +40,7 @@ export class DtoAddressSelectResItem extends $Dto.get(() => ModelAddress, {
43
40
  v.title($locale('Operations')),
44
41
  ZovaRender.order(1, 'max'),
45
42
  ZovaRender.cell('basic-table:actionOperationsRow', {
46
- actions: [
47
- ZovaRender.tableActionRow('basic-table:actionUpdate'),
48
- ZovaRender.tableActionRow('basic-table:actionDelete'),
49
- ],
43
+ actions: [ZovaRender.tableActionRow('basic-table:actionView')],
50
44
  }),
51
45
  )
52
46
  _operationsRow?: unknown;
@@ -1,57 +1,72 @@
1
1
  import type { TableIdentity } from 'table-identity';
2
- import type { IQueryParams } from 'vona-module-a-orm';
2
+ import type { IQueryParams, TypeModelColumns } from 'vona-module-a-orm';
3
3
 
4
4
  import { BeanBase } from 'vona';
5
5
  import { Service } from 'vona-module-a-bean';
6
6
 
7
- import type { DtoAddressCreate } from '../dto/addressCreate.tsx';
7
+ import type { DtoAddressMineCreate } from '../dto/addressMineCreate.tsx';
8
+ import type { DtoAddressMineRes } from '../dto/addressMineRes.tsx';
9
+ import type { DtoAddressMineUpdate } from '../dto/addressMineUpdate.tsx';
10
+ import type { DtoAddressMineView } from '../dto/addressMineView.tsx';
8
11
  import type { DtoAddressSelectRes } from '../dto/addressSelectRes.tsx';
9
- import type { DtoAddressUpdate } from '../dto/addressUpdate.tsx';
10
12
  import type { DtoAddressView } from '../dto/addressView.tsx';
13
+ import type { EntityAddress } from '../entity/address.tsx';
11
14
  import type { ModelAddress } from '../model/address.ts';
12
15
 
16
+ const addressColumns: TypeModelColumns<EntityAddress> = [
17
+ 'id',
18
+ 'recipientName',
19
+ 'phone',
20
+ 'countryCode',
21
+ 'region',
22
+ 'city',
23
+ 'postalCode',
24
+ 'addressLine1',
25
+ 'addressLine2',
26
+ 'createdAt',
27
+ 'updatedAt',
28
+ ];
29
+
13
30
  @Service()
14
31
  export class ServiceAddress extends BeanBase {
15
- async create(address: DtoAddressCreate) {
16
- return await this.scope.model.address.insert({
17
- ...address,
18
- userId: this._getCurrentUserId(),
32
+ async select(params?: IQueryParams<ModelAddress>): Promise<DtoAddressSelectRes> {
33
+ return await this.scope.model.address.selectAndCount({
34
+ ...params,
35
+ orders: params?.orders ?? [['id', 'asc']],
19
36
  });
20
37
  }
21
38
 
22
- async select(params?: IQueryParams<ModelAddress>): Promise<DtoAddressSelectRes> {
39
+ async view(id: TableIdentity): Promise<DtoAddressView | undefined> {
40
+ return await this.scope.model.address.getById(id);
41
+ }
42
+
43
+ async mine(params?: IQueryParams<ModelAddress>): Promise<DtoAddressMineRes> {
23
44
  return await this.scope.model.address.selectAndCount({
24
- columns: [
25
- 'id',
26
- 'recipientName',
27
- 'phone',
28
- 'countryCode',
29
- 'region',
30
- 'city',
31
- 'postalCode',
32
- 'addressLine1',
33
- 'addressLine2',
34
- 'createdAt',
35
- 'updatedAt',
36
- ],
45
+ ...params,
46
+ columns: addressColumns,
37
47
  where: { ...params?.where, userId: this._getCurrentUserId() },
38
- orders: [['id', 'asc']],
39
- limit: params?.limit ?? 20,
40
- offset: params?.offset ?? 0,
48
+ orders: params?.orders ?? [['id', 'asc']],
41
49
  });
42
50
  }
43
51
 
44
- async view(id: TableIdentity): Promise<DtoAddressView | undefined> {
52
+ async viewMine(id: TableIdentity): Promise<DtoAddressMineView | undefined> {
45
53
  return await this._getOwnedAddress(id);
46
54
  }
47
55
 
48
- async update(id: TableIdentity, address: DtoAddressUpdate) {
56
+ async createMine(address: DtoAddressMineCreate) {
57
+ return await this.scope.model.address.insert({
58
+ ...address,
59
+ userId: this._getCurrentUserId(),
60
+ });
61
+ }
62
+
63
+ async updateMine(id: TableIdentity, address: DtoAddressMineUpdate) {
49
64
  const ownedAddress = await this._getOwnedAddress(id);
50
65
  if (!ownedAddress) return;
51
66
  await this.scope.model.address.updateById(ownedAddress.id, address);
52
67
  }
53
68
 
54
- async delete(id: TableIdentity) {
69
+ async deleteMine(id: TableIdentity) {
55
70
  const ownedAddress = await this._getOwnedAddress(id);
56
71
  if (!ownedAddress) return;
57
72
  await this.scope.model.address.deleteById(ownedAddress.id);
@@ -64,21 +79,7 @@ export class ServiceAddress extends BeanBase {
64
79
  private async _getOwnedAddress(id: TableIdentity) {
65
80
  return await this.scope.model.address.get(
66
81
  { id, userId: this._getCurrentUserId() },
67
- {
68
- columns: [
69
- 'id',
70
- 'recipientName',
71
- 'phone',
72
- 'countryCode',
73
- 'region',
74
- 'city',
75
- 'postalCode',
76
- 'addressLine1',
77
- 'addressLine2',
78
- 'createdAt',
79
- 'updatedAt',
80
- ],
81
- },
82
+ { columns: addressColumns },
82
83
  );
83
84
  }
84
85
  }