zova-module-rest-resource 5.1.35 → 5.1.40

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.
package/dist/index.js CHANGED
@@ -72,13 +72,8 @@ var ModelResource = (_dec$4 = Model({ enableSelector: true }), _dec2$4 = BeanInf
72
72
  await this._bootstrap();
73
73
  }
74
74
  selectGeneral(actionPath, query) {
75
- const queryHash = hashkey(query);
76
75
  return this.$useStateData({
77
- queryKey: [
78
- "select",
79
- actionPath ?? "",
80
- queryHash
81
- ],
76
+ queryKey: this.keySelect(actionPath, query),
82
77
  queryFn: async () => {
83
78
  const apiPath = actionPath ? `${this.resourceApi}/${actionPath}` : this.resourceApi;
84
79
  return this.$fetch.get(this.sys.util.apiActionPathTranslate(apiPath), this.sys.util.apiActionConfigPrepare(void 0, { query }));
@@ -88,10 +83,19 @@ var ModelResource = (_dec$4 = Model({ enableSelector: true }), _dec2$4 = BeanInf
88
83
  select(query) {
89
84
  return this.selectGeneral(void 0, query);
90
85
  }
91
- view(id) {
86
+ queryItem(options) {
87
+ const { id, action, queryFn, meta } = options;
92
88
  if (isNil(id)) throw new Error("row id cannot empty");
93
89
  return this.$useStateData({
94
- queryKey: ["get", id],
90
+ queryKey: this.keyItem(id, action),
91
+ queryFn,
92
+ meta
93
+ });
94
+ }
95
+ view(id) {
96
+ return this.queryItem({
97
+ id,
98
+ action: "view",
95
99
  queryFn: async () => {
96
100
  return await this.$fetch.get(this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, { id }), this.sys.util.apiActionConfigPrepare()) ?? null;
97
101
  }
@@ -108,27 +112,34 @@ var ModelResource = (_dec$4 = Model({ enableSelector: true }), _dec2$4 = BeanInf
108
112
  }
109
113
  });
110
114
  }
111
- update(id) {
115
+ mutationItem(options) {
116
+ const { id, action, mutationFn, onSuccess, invalidateSelect = true } = options;
117
+ if (isNil(id)) throw new Error("row id cannot empty");
112
118
  return this.$useMutationData({
113
- mutationKey: ["update", id],
119
+ mutationKey: [...this.keyItem(id, action), "mutation"],
120
+ mutationFn,
121
+ onSuccess: async (data, variables, context) => {
122
+ if (invalidateSelect) this.$invalidateQueries({ queryKey: ["select"] });
123
+ this.$invalidateQueries({ queryKey: this.keyItemRoot(id) });
124
+ await onSuccess?.(data, variables, context);
125
+ }
126
+ });
127
+ }
128
+ update(id) {
129
+ return this.mutationItem({
130
+ id,
131
+ action: "update",
114
132
  mutationFn: async (params) => {
115
133
  return this.$fetch.patch(this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, { id }), params, this.sys.util.apiActionConfigPrepare());
116
- },
117
- onSuccess: () => {
118
- this.$invalidateQueries({ queryKey: ["select"] });
119
- this.$invalidateQueries({ queryKey: ["get", id] });
120
134
  }
121
135
  });
122
136
  }
123
137
  delete(id) {
124
- return this.$useMutationData({
125
- mutationKey: ["delete", id],
138
+ return this.mutationItem({
139
+ id,
140
+ action: "delete",
126
141
  mutationFn: async () => {
127
142
  return this.$fetch.delete(this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, { id }), this.sys.util.apiActionConfigPrepare());
128
- },
129
- onSuccess: () => {
130
- this.$invalidateQueries({ queryKey: ["select"] });
131
- this.$invalidateQueries({ queryKey: ["get", id] });
132
143
  }
133
144
  });
134
145
  }
@@ -172,6 +183,25 @@ var ModelResource = (_dec$4 = Model({ enableSelector: true }), _dec2$4 = BeanInf
172
183
  if (typeof schemaName === "object") schemaName = schemaName[SymbolOpenapiSchemaName];
173
184
  return this.$sdk.getSchemaDefaultValue(schemaName);
174
185
  }
186
+ keySelect(actionPath, query) {
187
+ return [
188
+ "select",
189
+ actionPath ?? "",
190
+ hashkey(query)
191
+ ];
192
+ }
193
+ keyItemRoot(id) {
194
+ if (isNil(id)) throw new Error("row id cannot empty");
195
+ return ["item", id];
196
+ }
197
+ keyItem(id, action) {
198
+ if (isNil(id)) throw new Error("row id cannot empty");
199
+ return [
200
+ "item",
201
+ id,
202
+ action
203
+ ];
204
+ }
175
205
  async _bootstrap() {
176
206
  const queryBootstrap = await $QueryAutoLoad(() => this.$sdk.getBootstrap(this.resource));
177
207
  if (!queryBootstrap?.data) throw new Error(`not found sdk of resource: ${this.resource}`);
@@ -225,11 +255,7 @@ var ControllerPageEntry = (_dec$3 = Controller(), _dec2$3 = BeanInfo({ module: "
225
255
  }
226
256
  async __init__() {
227
257
  this.formMeta = this.$computed(() => {
228
- const formScene = this.formScene;
229
- return {
230
- ...formMetaFromFormScene(formScene),
231
- formScene
232
- };
258
+ return formMetaFromFormScene(this.formScene);
233
259
  });
234
260
  this.formProvider = this.$computed(() => {
235
261
  return this.$$modelResource.formProvider;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["isNil","z","BeanControllerPageBase","deepExtend","Use","usePrepareArg","ZovaJsx","Controller","formMetaFromFormScene","$QueryAutoLoad","_isSlot","s","Object","prototype","toString","call","_isVNode","ControllerPageEntrySchemaParams","object","resource","string","id","optional","formScene","ControllerPageEntry","_dec","_dec2","__z_BeanInfo","module","_dec3","beanFullName","_dec4","Reflect","metadata","Function","_dec5","_class","_class2","constructor","args","formMeta","formProvider","formSchema","jsxZova","$$modelResource","$params","entryId","__init__","$computed","getFormSchema","_prepareJsx","getFormApiSchemas","sdk","bean","_newBeanSimple","components","render","blocks","rest","length","domBlocks","forEach","block","index","options","key","domBlock","Array","isArray","push","_createVNode","ZPage","default","_applyDecoratedDescriptor","getOwnPropertyDescriptor","Virtual","Controller","ControllerPageEntry","ControllerPageEntrySchemaParams","ControllerPageEntryCreateSchemaParams","ControllerPageEntryCreate","_dec","_dec2","_dec3","__z_BeanInfo","module","_class","z","BeanControllerPageBase","deepExtend","Use","usePrepareArg","ZovaJsx","Controller","$QueryAutoLoad","_isSlot","s","Object","prototype","toString","call","_isVNode","ControllerPageResourceSchemaParams","object","resource","string","ControllerPageResource","_dec","_dec2","__z_BeanInfo","module","_dec3","beanFullName","_dec4","Reflect","metadata","Function","_dec5","_class","_class2","constructor","args","jsxZova","$$modelResource","$params","__init__","_prepareJsx","apiSchemasSelect","sdk","bean","_newBeanSimple","schemaRow","render","blocks","rest","length","domBlocks","forEach","block","index","options","key","domBlock","Array","isArray","push","_createVNode","ZPage","default","_applyDecoratedDescriptor","getOwnPropertyDescriptor"],"sources":["../src/model/resource.ts","../src/page/entry/controller.tsx","../src/page/entryCreate/controller.tsx","../src/page/resource/controller.tsx","../src/.metadata/page/entry.ts","../src/.metadata/page/entryCreate.ts","../src/.metadata/page/resource.ts","../src/routes.ts","../src/.metadata/index.ts"],"sourcesContent":["import type { TableIdentity } from 'table-identity';\nimport type { DataMutation, IDecoratorModelOptions } from 'zova-module-a-model';\nimport type {\n IFormMeta,\n IFormProvider,\n ISchemaObjectExtensionField,\n ITableQuery,\n ITableRes,\n TypeOpenapiPermissions,\n} from 'zova-module-a-openapi';\n\nimport { hashkey, isNil } from '@cabloy/utils';\nimport { SchemaObject } from 'openapi3-ts/oas31';\nimport { UseScope } from 'zova';\nimport { formSceneFromFormMeta } from 'zova-module-a-form';\nimport { $QueryAutoLoad, BeanModelBase, Model } from 'zova-module-a-model';\nimport { ScopeModuleAOpenapi, SymbolOpenapiSchemaName } from 'zova-module-a-openapi';\n\nexport interface IModelOptionsResource extends IDecoratorModelOptions {}\n\n@Model<IModelOptionsResource>({\n enableSelector: true,\n})\nexport class ModelResource<\n Entity = any,\n EntityCreate = Partial<Entity>,\n EntityUpdate = Partial<Entity>,\n> extends BeanModelBase {\n public resource: string;\n public resourceApi: string;\n public permissions?: TypeOpenapiPermissions;\n public formProvider: IFormProvider;\n public schemaView?: ISchemaObjectExtensionField;\n public schemaCreate?: ISchemaObjectExtensionField;\n public schemaUpdate?: ISchemaObjectExtensionField;\n public schemaFilter?: ISchemaObjectExtensionField;\n public schemaRow?: ISchemaObjectExtensionField;\n public schemaPages?: ISchemaObjectExtensionField;\n\n @UseScope()\n $$scopeOpenapi: ScopeModuleAOpenapi;\n\n protected async __init__(resource: string) {\n if (!resource) throw new Error('resource not specified');\n await super.__init__(resource);\n this.resource = resource;\n this.permissions = this.$computed(() => {\n const permissions = this.$sdk.getPermissions(this.resource);\n return permissions.data;\n });\n this.formProvider = this.$computed(() => {\n return this.$$scopeOpenapi.config.formProvider;\n });\n this.schemaView = this.$computed(() => {\n return this.apiSchemasView.responseBody;\n });\n this.schemaCreate = this.$computed(() => {\n return this.apiSchemasCreate.requestBody;\n });\n this.schemaUpdate = this.$computed(() => {\n return this.apiSchemasUpdate.requestBody;\n });\n this.schemaFilter = this.$computed(() => {\n return this.apiSchemasSelect.filter;\n });\n this.schemaRow = this.$computed(() => {\n return this.apiSchemasSelect.row;\n });\n this.schemaPages = this.$computed(() => {\n return this.apiSchemasSelect.paged;\n });\n // bootstrap\n await this._bootstrap();\n }\n\n selectGeneral(actionPath?: string, query?: ITableQuery) {\n const queryHash = hashkey(query);\n return this.$useStateData({\n queryKey: ['select', actionPath ?? '', queryHash],\n queryFn: async () => {\n const apiPath = actionPath ? `${this.resourceApi}/${actionPath}` : this.resourceApi;\n return this.$fetch.get<any, ITableRes<Entity>>(\n this.sys.util.apiActionPathTranslate(apiPath),\n this.sys.util.apiActionConfigPrepare(undefined, { query }),\n );\n },\n });\n }\n\n select(query?: ITableQuery) {\n return this.selectGeneral(undefined, query);\n }\n\n view(id: TableIdentity) {\n if (isNil(id)) throw new Error('row id cannot empty');\n return this.$useStateData({\n queryKey: ['get', id],\n queryFn: async () => {\n const res = await this.$fetch.get<any, Entity>(\n this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, { id }),\n this.sys.util.apiActionConfigPrepare(),\n );\n return res ?? null;\n },\n });\n }\n\n create() {\n return this.$useMutationData<void, EntityCreate>({\n mutationKey: ['create'],\n mutationFn: async params => {\n return this.$fetch.post<any, void, EntityCreate>(\n this.sys.util.apiActionPathTranslate(this.resourceApi),\n params,\n this.sys.util.apiActionConfigPrepare(),\n );\n },\n onSuccess: () => {\n this.$invalidateQueries({ queryKey: ['select'] });\n },\n });\n }\n\n update(id: TableIdentity) {\n return this.$useMutationData<void, EntityUpdate>({\n mutationKey: ['update', id],\n mutationFn: async params => {\n return this.$fetch.patch<any, void, EntityUpdate>(\n this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, { id }),\n params,\n this.sys.util.apiActionConfigPrepare(),\n );\n },\n onSuccess: () => {\n this.$invalidateQueries({ queryKey: ['select'] });\n this.$invalidateQueries({ queryKey: ['get', id] });\n },\n });\n }\n\n delete(id: TableIdentity) {\n return this.$useMutationData<void, void>({\n mutationKey: ['delete', id],\n mutationFn: async () => {\n return this.$fetch.delete<any, void, void>(\n this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, { id }),\n this.sys.util.apiActionConfigPrepare(),\n );\n },\n onSuccess: () => {\n this.$invalidateQueries({ queryKey: ['select'] });\n this.$invalidateQueries({ queryKey: ['get', id] });\n },\n });\n }\n\n public get apiSchemasSelect() {\n return this.$sdk.createApiSchemas(this.resourceApi, 'get');\n }\n\n public get apiSchemasView() {\n return this.$sdk.createApiSchemas(`${this.resourceApi}/:id`, 'get');\n }\n\n public get apiSchemasCreate() {\n return this.$sdk.createApiSchemas(this.resourceApi, 'post');\n }\n\n public get apiSchemasUpdate() {\n return this.$sdk.createApiSchemas(`${this.resourceApi}/:id`, 'patch');\n }\n\n public getFormSchema(formMeta: IFormMeta) {\n const formScene = formMeta.formScene ?? formSceneFromFormMeta(formMeta);\n if (formScene === 'view') return this.schemaView;\n if (formScene === 'create') return this.schemaCreate;\n if (formScene === 'edit') return this.schemaUpdate;\n }\n\n public getFormApiSchemas(formMeta: IFormMeta) {\n const formScene = formMeta.formScene ?? formSceneFromFormMeta(formMeta);\n if (formScene === 'view') return this.apiSchemasView;\n if (formScene === 'create') return this.apiSchemasCreate;\n if (formScene === 'edit') return this.apiSchemasUpdate;\n throw new Error('invalid parameters');\n }\n\n public getFormMutationSubmit(formMeta: IFormMeta, id?: TableIdentity): DataMutation | undefined {\n if (formMeta.formMode !== 'edit') return;\n if (formMeta.editMode === 'create') {\n return this.create() as any;\n } else if (formMeta.editMode === 'update') {\n return this.update(id!) as any;\n }\n }\n\n public getFormData(\n formMeta: IFormMeta,\n id?: TableIdentity,\n ): Entity | EntityCreate | EntityUpdate | undefined {\n if (formMeta.formMode === 'edit' && formMeta.editMode === 'create') {\n return this.getQueryDataDefaultValue(this.schemaCreate);\n }\n if (isNil(id)) return undefined;\n return this.view(id).data as Entity | EntityUpdate | undefined;\n }\n\n public getQueryDataDefaultValue(schemaName?: SchemaObject | string): EntityCreate | undefined {\n if (!schemaName) return;\n if (typeof schemaName === 'object') {\n schemaName = schemaName[SymbolOpenapiSchemaName] as string;\n }\n return this.$sdk.getSchemaDefaultValue(schemaName) as EntityCreate | undefined;\n }\n\n private async _bootstrap() {\n const queryBootstrap = await $QueryAutoLoad(() => this.$sdk.getBootstrap(this.resource));\n if (!queryBootstrap?.data) {\n throw new Error(`not found sdk of resource: ${this.resource}`);\n }\n this.resourceApi = this.sys.util.parseResourceApi(this.resource, queryBootstrap.data.apiPath);\n }\n}\n","import type {\n IFormMeta,\n IFormProvider,\n ISchemaObjectExtensionField,\n TypeFormScene,\n} from 'zova-module-a-openapi';\n\nimport { isNil } from '@cabloy/utils';\nimport { VNode } from 'vue';\nimport { z } from 'zod';\nimport { BeanControllerPageBase, deepExtend, Use, usePrepareArg } from 'zova';\nimport { ZovaJsx } from 'zova-jsx';\nimport { Controller } from 'zova-module-a-bean';\nimport { formMetaFromFormScene } from 'zova-module-a-form';\nimport { $QueryAutoLoad } from 'zova-module-a-model';\nimport { ZPage } from 'zova-module-home-base';\n\nimport type { ModelResource } from '../../model/resource.js';\n\nexport const ControllerPageEntrySchemaParams = z.object({\n resource: z.string(),\n id: z.string().optional(),\n formScene: z.string().optional(),\n});\n\n@Controller()\nexport class ControllerPageEntry extends BeanControllerPageBase {\n formMeta: IFormMeta;\n formProvider: IFormProvider;\n formSchema?: ISchemaObjectExtensionField;\n jsxZova: ZovaJsx;\n\n @Use({ beanFullName: 'rest-resource.model.resource' })\n get $$modelResource(): ModelResource {\n return usePrepareArg(this.$params.resource, true);\n }\n\n get resource() {\n return this.$params.resource;\n }\n\n get entryId() {\n return this.$params.id;\n }\n\n get formScene() {\n return (\n (this.$params.formScene as TypeFormScene | undefined) ??\n (isNil(this.entryId) ? 'create' : 'view')\n );\n }\n\n protected async __init__() {\n this.formMeta = this.$computed(() => {\n const formScene = this.formScene;\n return { ...formMetaFromFormScene(formScene), formScene };\n });\n this.formProvider = this.$computed(() => {\n return this.$$modelResource.formProvider;\n });\n this.formSchema = this.$computed(() => {\n return this.$$modelResource.getFormSchema(this.formMeta);\n });\n // jsx\n this._prepareJsx();\n // load schema\n await $QueryAutoLoad(() => this.$$modelResource.getFormApiSchemas(this.formMeta)?.sdk);\n }\n\n private _prepareJsx() {\n this.jsxZova = this.bean._newBeanSimple(ZovaJsx, false, this.formProvider.components);\n }\n\n protected render() {\n const blocks = this.formSchema?.rest?.blocks;\n if (!blocks || blocks.length === 0) return;\n const domBlocks: VNode[] = [];\n blocks.forEach((block, index) => {\n const options = deepExtend(\n { key: index },\n {\n resource: this.resource,\n id: this.entryId,\n formScene: this.formScene,\n },\n block.options,\n );\n const domBlock = this.jsxZova.render(block.render!, options);\n if (!domBlock) return;\n if (Array.isArray(domBlock)) {\n domBlocks.push(...domBlock);\n } else {\n domBlocks.push(domBlock);\n }\n });\n return <ZPage>{domBlocks}</ZPage>;\n }\n}\n","import { Virtual } from 'zova-core';\nimport { Controller } from 'zova-module-a-bean';\n\nimport { ControllerPageEntry, ControllerPageEntrySchemaParams } from '../entry/controller.jsx';\n\nexport const ControllerPageEntryCreateSchemaParams = ControllerPageEntrySchemaParams;\n\n@Controller()\n@Virtual()\nexport class ControllerPageEntryCreate extends ControllerPageEntry {}\n","import { VNode } from 'vue';\nimport { z } from 'zod';\nimport { BeanControllerPageBase, deepExtend, Use, usePrepareArg } from 'zova';\nimport { ZovaJsx } from 'zova-jsx';\nimport { Controller } from 'zova-module-a-bean';\nimport { $QueryAutoLoad } from 'zova-module-a-model';\nimport { ZPage } from 'zova-module-home-base';\n\nimport type { ModelResource } from '../../model/resource.js';\n\nexport const ControllerPageResourceSchemaParams = z.object({\n resource: z.string(),\n});\n\n@Controller()\nexport class ControllerPageResource extends BeanControllerPageBase {\n jsxZova: ZovaJsx;\n\n @Use({ beanFullName: 'rest-resource.model.resource' })\n get $$modelResource(): ModelResource {\n return usePrepareArg(this.$params.resource, true);\n }\n\n get resource() {\n return this.$params.resource;\n }\n\n protected async __init__() {\n // jsx\n this._prepareJsx();\n // load schema/data\n await $QueryAutoLoad(() => this.$$modelResource.apiSchemasSelect.sdk);\n }\n\n private _prepareJsx() {\n this.jsxZova = this.bean._newBeanSimple(ZovaJsx, false);\n }\n\n get schemaRow() {\n return this.$$modelResource.schemaRow;\n }\n\n public render() {\n const blocks = this.schemaRow?.rest?.blocks;\n if (!blocks || blocks.length === 0) return;\n const domBlocks: VNode[] = [];\n blocks.forEach((block, index) => {\n const options = deepExtend(\n { key: index },\n {\n resource: this.resource,\n },\n block.options,\n );\n const domBlock = this.jsxZova.render(block.render!, options);\n if (!domBlock) return;\n if (Array.isArray(domBlock)) {\n domBlocks.push(...domBlock);\n } else {\n domBlocks.push(domBlock);\n }\n });\n return <ZPage>{domBlocks}</ZPage>;\n }\n}\n","import { z } from 'zod';\nimport { createZovaComponentPage } from 'zova';\n\nimport { ControllerPageEntry } from '../../page/entry/controller.jsx';\nimport { ControllerPageEntrySchemaParams } from '../../page/entry/controller.jsx';\nexport namespace NSControllerPageEntry {\n export const paramsSchema = ControllerPageEntrySchemaParams;\n export type ParamsInput = z.input<typeof ControllerPageEntrySchemaParams>;\n export type ParamsOutput = z.output<typeof ControllerPageEntrySchemaParams>;\n}\n\nexport const ZPageEntry = createZovaComponentPage(ControllerPageEntry, undefined, undefined);\n","import { z } from 'zod';\nimport { createZovaComponentPage } from 'zova';\n\nimport { ControllerPageEntryCreate } from '../../page/entryCreate/controller.jsx';\nimport { ControllerPageEntryCreateSchemaParams } from '../../page/entryCreate/controller.jsx';\nexport namespace NSControllerPageEntryCreate {\n export const paramsSchema = ControllerPageEntryCreateSchemaParams;\n export type ParamsInput = z.input<typeof ControllerPageEntryCreateSchemaParams>;\n export type ParamsOutput = z.output<typeof ControllerPageEntryCreateSchemaParams>;\n}\n\nexport const ZPageEntryCreate = createZovaComponentPage(\n ControllerPageEntryCreate,\n undefined,\n undefined,\n);\n","import { z } from 'zod';\nimport { createZovaComponentPage } from 'zova';\n\nimport { ControllerPageResource } from '../../page/resource/controller.jsx';\nimport { ControllerPageResourceSchemaParams } from '../../page/resource/controller.jsx';\nexport namespace NSControllerPageResource {\n export const paramsSchema = ControllerPageResourceSchemaParams;\n export type ParamsInput = z.input<typeof ControllerPageResourceSchemaParams>;\n export type ParamsOutput = z.output<typeof ControllerPageResourceSchemaParams>;\n}\n\nexport const ZPageResource = createZovaComponentPage(ControllerPageResource, undefined, undefined);\n","import type { IModuleRoute } from 'zova-module-a-router';\n\nimport { ZPageEntry } from './.metadata/page/entry.js';\nimport { ZPageEntryCreate } from './.metadata/page/entryCreate.js';\nimport { ZPageResource } from './.metadata/page/resource.js';\n\nexport const routes: IModuleRoute[] = [\n {\n name: 'resource',\n path: ':resource',\n component: ZPageResource,\n meta: {\n tabKey,\n },\n },\n {\n name: 'entryCreate',\n path: ':resource/create',\n component: ZPageEntryCreate,\n meta: {\n tabKey,\n },\n },\n {\n name: 'entry',\n path: ':resource/:id/:formScene?',\n component: ZPageEntry,\n meta: {\n tabKey,\n },\n },\n];\n\nfunction tabKey(route) {\n return `/rest/resource/${encodeURIComponent(route.params.resource)}`;\n}\n","// eslint-disable\n/** model: begin */\nexport * from '../model/resource.js';\nimport { IModelOptionsResource } from '../model/resource.js';\nimport 'zova-module-a-model';\ndeclare module 'zova-module-a-model' {\n \n export interface IModelRecord {\n 'rest-resource:resource': IModelOptionsResource;\n }\n\n \n}\ndeclare module 'zova-module-rest-resource' {\n \n export interface ModelResource {\n /** @internal */\n get scope(): ScopeModuleRestResource;\n }\n\n export interface ModelResource {\n get $beanFullName(): 'rest-resource.model.resource';\n get $onionName(): 'rest-resource:resource';\n get $onionOptions(): IModelOptionsResource;\n } \n}\n/** model: end */\n/** model: begin */\nimport { ModelResource } from '../model/resource.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'rest-resource.model.resource': ModelResource;\n }\n}\n/** model: end */\n/** controller: begin */\nexport * from '../page/entry/controller.jsx';\nexport * from '../page/entryCreate/controller.jsx';\nexport * from '../page/resource/controller.jsx';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-rest-resource' {\n \n export interface ControllerPageEntry {\n /** @internal */\n get scope(): ScopeModuleRestResource;\n }\n\n export interface ControllerPageResource {\n /** @internal */\n get scope(): ScopeModuleRestResource;\n } \n}\n/** controller: end */\n/** controller: begin */\nimport { ControllerPageEntry } from '../page/entry/controller.jsx';\nimport { ControllerPageEntryCreate } from '../page/entryCreate/controller.jsx';\nimport { ControllerPageResource } from '../page/resource/controller.jsx';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordLocal {\n 'rest-resource.controller.pageEntry': ControllerPageEntry;\n'rest-resource.controller.pageEntryCreate': ControllerPageEntryCreate;\n'rest-resource.controller.pageResource': ControllerPageResource;\n }\n}\n/** controller: end */\n/** pages: begin */\nexport * from './page/entry.js';\nimport { NSControllerPageEntry } from './page/entry.js';\nexport * from './page/entryCreate.js';\nimport { NSControllerPageEntryCreate } from './page/entryCreate.js';\nexport * from './page/resource.js';\nimport { NSControllerPageResource } from './page/resource.js';\nexport * from '../routes.js';\nimport { TypePagePathSchema } from 'zova-module-a-router';\nimport 'zova';\ndeclare module 'zova-module-a-router' {\nexport interface IPagePathRecord {\n '/rest/resource/:resource/:id/:formScene?': TypePagePathSchema<NSControllerPageEntry.ParamsInput,undefined>;\n'/rest/resource/:resource/create': TypePagePathSchema<NSControllerPageEntryCreate.ParamsInput,undefined>;\n'/rest/resource/:resource': TypePagePathSchema<NSControllerPageResource.ParamsInput,undefined>;\n}\nexport interface IPageNameRecord {\n 'rest-resource:entry': undefined;\n'rest-resource:entryCreate': undefined;\n'rest-resource:resource': undefined;\n}\n}\nexport const pagePathSchemas = {\n\n};\nexport const pageNameSchemas = {\n'rest-resource:entry': {\n params: NSControllerPageEntry.paramsSchema,\n \n },\n'rest-resource:entryCreate': {\n params: NSControllerPageEntryCreate.paramsSchema,\n \n },\n'rest-resource:resource': {\n params: NSControllerPageResource.paramsSchema,\n \n },\n};\ndeclare module 'zova-module-rest-resource' {\n export interface ControllerPageEntry {\n $params: NSControllerPageEntry.ParamsOutput;\n }\nexport interface ControllerPageEntryCreate {\n $params: NSControllerPageEntryCreate.ParamsOutput;\n }\nexport interface ControllerPageResource {\n $params: NSControllerPageResource.ParamsOutput;\n }\n}\n/** pages: end */\n\n/** scope: begin */\nimport { BeanScopeBase, type BeanScopeUtil } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\n\n@Scope()\nexport class ScopeModuleRestResource extends BeanScopeBase {}\n\nexport interface ScopeModuleRestResource {\n util: BeanScopeUtil;\n}\n\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanScopeRecord {\n 'rest-resource': ScopeModuleRestResource;\n }\n \n \n\n \n\n \n}\n \n/** scope: end */\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["isNil","z","BeanControllerPageBase","deepExtend","Use","usePrepareArg","ZovaJsx","Controller","formMetaFromFormScene","$QueryAutoLoad","_isSlot","s","Object","prototype","toString","call","_isVNode","ControllerPageEntrySchemaParams","object","resource","string","id","optional","formScene","ControllerPageEntry","_dec","_dec2","__z_BeanInfo","module","_dec3","beanFullName","_dec4","Reflect","metadata","Function","_dec5","_class","_class2","constructor","args","formMeta","formProvider","formSchema","jsxZova","$$modelResource","$params","entryId","__init__","$computed","getFormSchema","_prepareJsx","getFormApiSchemas","sdk","bean","_newBeanSimple","components","render","blocks","rest","length","domBlocks","forEach","block","index","options","key","domBlock","Array","isArray","push","_createVNode","ZPage","default","_applyDecoratedDescriptor","getOwnPropertyDescriptor","Virtual","Controller","ControllerPageEntry","ControllerPageEntrySchemaParams","ControllerPageEntryCreateSchemaParams","ControllerPageEntryCreate","_dec","_dec2","_dec3","__z_BeanInfo","module","_class","z","BeanControllerPageBase","deepExtend","Use","usePrepareArg","ZovaJsx","Controller","$QueryAutoLoad","_isSlot","s","Object","prototype","toString","call","_isVNode","ControllerPageResourceSchemaParams","object","resource","string","ControllerPageResource","_dec","_dec2","__z_BeanInfo","module","_dec3","beanFullName","_dec4","Reflect","metadata","Function","_dec5","_class","_class2","constructor","args","jsxZova","$$modelResource","$params","__init__","_prepareJsx","apiSchemasSelect","sdk","bean","_newBeanSimple","schemaRow","render","blocks","rest","length","domBlocks","forEach","block","index","options","key","domBlock","Array","isArray","push","_createVNode","ZPage","default","_applyDecoratedDescriptor","getOwnPropertyDescriptor"],"sources":["../src/model/resource.ts","../src/page/entry/controller.tsx","../src/page/entryCreate/controller.tsx","../src/page/resource/controller.tsx","../src/.metadata/page/entry.ts","../src/.metadata/page/entryCreate.ts","../src/.metadata/page/resource.ts","../src/routes.ts","../src/.metadata/index.ts"],"sourcesContent":["var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor;\nfunction _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\nfunction _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\nfunction _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport { hashkey, isNil } from '@cabloy/utils';\nimport { UseScope } from 'zova';\nimport { formSceneFromFormMeta } from 'zova-module-a-form';\nimport { $QueryAutoLoad, BeanModelBase, Model } from 'zova-module-a-model';\nimport { SymbolOpenapiSchemaName } from 'zova-module-a-openapi';\nexport let ModelResource = (_dec = Model({\n enableSelector: true\n}), _dec2 = __z_BeanInfo({\n module: \"rest-resource\"\n}), _dec3 = UseScope(\"a-openapi\"), _dec4 = Reflect.metadata(\"design:type\", typeof ScopeModuleAOpenapi === \"undefined\" ? Object : ScopeModuleAOpenapi), _dec(_class = _dec2(_class = (_class2 = class ModelResource extends BeanModelBase {\n constructor(...args) {\n super(...args);\n this.resource = void 0;\n this.resourceApi = void 0;\n this.permissions = void 0;\n this.formProvider = void 0;\n this.schemaView = void 0;\n this.schemaCreate = void 0;\n this.schemaUpdate = void 0;\n this.schemaFilter = void 0;\n this.schemaRow = void 0;\n this.schemaPages = void 0;\n _initializerDefineProperty(this, \"$$scopeOpenapi\", _descriptor, this);\n }\n async __init__(resource) {\n if (!resource) throw new Error('resource not specified');\n await super.__init__(resource);\n this.resource = resource;\n this.permissions = this.$computed(() => {\n const permissions = this.$sdk.getPermissions(this.resource);\n return permissions.data;\n });\n this.formProvider = this.$computed(() => {\n return this.$$scopeOpenapi.config.formProvider;\n });\n this.schemaView = this.$computed(() => {\n return this.apiSchemasView.responseBody;\n });\n this.schemaCreate = this.$computed(() => {\n return this.apiSchemasCreate.requestBody;\n });\n this.schemaUpdate = this.$computed(() => {\n return this.apiSchemasUpdate.requestBody;\n });\n this.schemaFilter = this.$computed(() => {\n return this.apiSchemasSelect.filter;\n });\n this.schemaRow = this.$computed(() => {\n return this.apiSchemasSelect.row;\n });\n this.schemaPages = this.$computed(() => {\n return this.apiSchemasSelect.paged;\n });\n // bootstrap\n await this._bootstrap();\n }\n selectGeneral(actionPath, query) {\n return this.$useStateData({\n queryKey: this.keySelect(actionPath, query),\n queryFn: async () => {\n const apiPath = actionPath ? `${this.resourceApi}/${actionPath}` : this.resourceApi;\n return this.$fetch.get(this.sys.util.apiActionPathTranslate(apiPath), this.sys.util.apiActionConfigPrepare(undefined, {\n query\n }));\n }\n });\n }\n select(query) {\n return this.selectGeneral(undefined, query);\n }\n queryItem(options) {\n const {\n id,\n action,\n queryFn,\n meta\n } = options;\n if (isNil(id)) throw new Error('row id cannot empty');\n return this.$useStateData({\n queryKey: this.keyItem(id, action),\n queryFn,\n meta\n });\n }\n view(id) {\n return this.queryItem({\n id,\n action: 'view',\n queryFn: async () => {\n const res = await this.$fetch.get(this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, {\n id\n }), this.sys.util.apiActionConfigPrepare());\n return res ?? null;\n }\n });\n }\n create() {\n return this.$useMutationData({\n mutationKey: ['create'],\n mutationFn: async params => {\n return this.$fetch.post(this.sys.util.apiActionPathTranslate(this.resourceApi), params, this.sys.util.apiActionConfigPrepare());\n },\n onSuccess: () => {\n this.$invalidateQueries({\n queryKey: ['select']\n });\n }\n });\n }\n mutationItem(options) {\n const {\n id,\n action,\n mutationFn,\n onSuccess,\n invalidateSelect = true\n } = options;\n if (isNil(id)) throw new Error('row id cannot empty');\n return this.$useMutationData({\n mutationKey: [...this.keyItem(id, action), 'mutation'],\n mutationFn,\n onSuccess: async (data, variables, context) => {\n if (invalidateSelect) {\n this.$invalidateQueries({\n queryKey: ['select']\n });\n }\n this.$invalidateQueries({\n queryKey: this.keyItemRoot(id)\n });\n await onSuccess?.(data, variables, context);\n }\n });\n }\n update(id) {\n return this.mutationItem({\n id,\n action: 'update',\n mutationFn: async params => {\n return this.$fetch.patch(this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, {\n id\n }), params, this.sys.util.apiActionConfigPrepare());\n }\n });\n }\n delete(id) {\n return this.mutationItem({\n id,\n action: 'delete',\n mutationFn: async () => {\n return this.$fetch.delete(this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, {\n id\n }), this.sys.util.apiActionConfigPrepare());\n }\n });\n }\n get apiSchemasSelect() {\n return this.$sdk.createApiSchemas(this.resourceApi, 'get');\n }\n get apiSchemasView() {\n return this.$sdk.createApiSchemas(`${this.resourceApi}/:id`, 'get');\n }\n get apiSchemasCreate() {\n return this.$sdk.createApiSchemas(this.resourceApi, 'post');\n }\n get apiSchemasUpdate() {\n return this.$sdk.createApiSchemas(`${this.resourceApi}/:id`, 'patch');\n }\n getFormSchema(formMeta) {\n const formScene = formMeta.formScene ?? formSceneFromFormMeta(formMeta);\n if (formScene === 'view') return this.schemaView;\n if (formScene === 'create') return this.schemaCreate;\n if (formScene === 'edit') return this.schemaUpdate;\n }\n getFormApiSchemas(formMeta) {\n const formScene = formMeta.formScene ?? formSceneFromFormMeta(formMeta);\n if (formScene === 'view') return this.apiSchemasView;\n if (formScene === 'create') return this.apiSchemasCreate;\n if (formScene === 'edit') return this.apiSchemasUpdate;\n throw new Error('invalid parameters');\n }\n getFormMutationSubmit(formMeta, id) {\n if (formMeta.formMode !== 'edit') return;\n if (formMeta.editMode === 'create') {\n return this.create();\n } else if (formMeta.editMode === 'update') {\n return this.update(id);\n }\n }\n getFormData(formMeta, id) {\n if (formMeta.formMode === 'edit' && formMeta.editMode === 'create') {\n return this.getQueryDataDefaultValue(this.schemaCreate);\n }\n if (isNil(id)) return undefined;\n return this.view(id).data;\n }\n getQueryDataDefaultValue(schemaName) {\n if (!schemaName) return;\n if (typeof schemaName === 'object') {\n schemaName = schemaName[SymbolOpenapiSchemaName];\n }\n return this.$sdk.getSchemaDefaultValue(schemaName);\n }\n keySelect(actionPath, query) {\n return ['select', actionPath ?? '', hashkey(query)];\n }\n keyItemRoot(id) {\n if (isNil(id)) throw new Error('row id cannot empty');\n return ['item', id];\n }\n keyItem(id, action) {\n if (isNil(id)) throw new Error('row id cannot empty');\n return ['item', id, action];\n }\n async _bootstrap() {\n const queryBootstrap = await $QueryAutoLoad(() => this.$sdk.getBootstrap(this.resource));\n if (!queryBootstrap?.data) {\n throw new Error(`not found sdk of resource: ${this.resource}`);\n }\n this.resourceApi = this.sys.util.parseResourceApi(this.resource, queryBootstrap.data.apiPath);\n }\n}, _descriptor = _applyDecoratedDescriptor(_class2.prototype, \"$$scopeOpenapi\", [_dec3, _dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _class2)) || _class) || _class);","import type {\n IFormMeta,\n IFormProvider,\n ISchemaObjectExtensionField,\n TypeFormScene,\n} from 'zova-module-a-openapi';\n\nimport { isNil } from '@cabloy/utils';\nimport { VNode } from 'vue';\nimport { z } from 'zod';\nimport { BeanControllerPageBase, deepExtend, Use, usePrepareArg } from 'zova';\nimport { ZovaJsx } from 'zova-jsx';\nimport { Controller } from 'zova-module-a-bean';\nimport { formMetaFromFormScene } from 'zova-module-a-form';\nimport { $QueryAutoLoad } from 'zova-module-a-model';\nimport { ZPage } from 'zova-module-home-base';\n\nimport type { ModelResource } from '../../model/resource.js';\n\nexport const ControllerPageEntrySchemaParams = z.object({\n resource: z.string(),\n id: z.string().optional(),\n formScene: z.string().optional(),\n});\n\n@Controller()\nexport class ControllerPageEntry extends BeanControllerPageBase {\n formMeta: IFormMeta;\n formProvider: IFormProvider;\n formSchema?: ISchemaObjectExtensionField;\n jsxZova: ZovaJsx;\n\n @Use({ beanFullName: 'rest-resource.model.resource' })\n get $$modelResource(): ModelResource {\n return usePrepareArg(this.$params.resource, true);\n }\n\n get resource() {\n return this.$params.resource;\n }\n\n get entryId() {\n return this.$params.id;\n }\n\n get formScene() {\n return (\n (this.$params.formScene as TypeFormScene | undefined) ??\n (isNil(this.entryId) ? 'create' : 'view')\n );\n }\n\n protected async __init__() {\n this.formMeta = this.$computed(() => {\n return formMetaFromFormScene(this.formScene);\n });\n this.formProvider = this.$computed(() => {\n return this.$$modelResource.formProvider;\n });\n this.formSchema = this.$computed(() => {\n return this.$$modelResource.getFormSchema(this.formMeta);\n });\n // jsx\n this._prepareJsx();\n // load schema\n await $QueryAutoLoad(() => this.$$modelResource.getFormApiSchemas(this.formMeta)?.sdk);\n }\n\n private _prepareJsx() {\n this.jsxZova = this.bean._newBeanSimple(ZovaJsx, false, this.formProvider.components);\n }\n\n protected render() {\n const blocks = this.formSchema?.rest?.blocks;\n if (!blocks || blocks.length === 0) return;\n const domBlocks: VNode[] = [];\n blocks.forEach((block, index) => {\n const options = deepExtend(\n { key: index },\n {\n resource: this.resource,\n id: this.entryId,\n formScene: this.formScene,\n },\n block.options,\n );\n const domBlock = this.jsxZova.render(block.render!, options);\n if (!domBlock) return;\n if (Array.isArray(domBlock)) {\n domBlocks.push(...domBlock);\n } else {\n domBlocks.push(domBlock);\n }\n });\n return <ZPage>{domBlocks}</ZPage>;\n }\n}\n","import { Virtual } from 'zova-core';\nimport { Controller } from 'zova-module-a-bean';\n\nimport { ControllerPageEntry, ControllerPageEntrySchemaParams } from '../entry/controller.jsx';\n\nexport const ControllerPageEntryCreateSchemaParams = ControllerPageEntrySchemaParams;\n\n@Controller()\n@Virtual()\nexport class ControllerPageEntryCreate extends ControllerPageEntry {}\n","import { VNode } from 'vue';\nimport { z } from 'zod';\nimport { BeanControllerPageBase, deepExtend, Use, usePrepareArg } from 'zova';\nimport { ZovaJsx } from 'zova-jsx';\nimport { Controller } from 'zova-module-a-bean';\nimport { $QueryAutoLoad } from 'zova-module-a-model';\nimport { ZPage } from 'zova-module-home-base';\n\nimport type { ModelResource } from '../../model/resource.js';\n\nexport const ControllerPageResourceSchemaParams = z.object({\n resource: z.string(),\n});\n\n@Controller()\nexport class ControllerPageResource extends BeanControllerPageBase {\n jsxZova: ZovaJsx;\n\n @Use({ beanFullName: 'rest-resource.model.resource' })\n get $$modelResource(): ModelResource {\n return usePrepareArg(this.$params.resource, true);\n }\n\n get resource() {\n return this.$params.resource;\n }\n\n protected async __init__() {\n // jsx\n this._prepareJsx();\n // load schema/data\n await $QueryAutoLoad(() => this.$$modelResource.apiSchemasSelect.sdk);\n }\n\n private _prepareJsx() {\n this.jsxZova = this.bean._newBeanSimple(ZovaJsx, false);\n }\n\n get schemaRow() {\n return this.$$modelResource.schemaRow;\n }\n\n public render() {\n const blocks = this.schemaRow?.rest?.blocks;\n if (!blocks || blocks.length === 0) return;\n const domBlocks: VNode[] = [];\n blocks.forEach((block, index) => {\n const options = deepExtend(\n { key: index },\n {\n resource: this.resource,\n },\n block.options,\n );\n const domBlock = this.jsxZova.render(block.render!, options);\n if (!domBlock) return;\n if (Array.isArray(domBlock)) {\n domBlocks.push(...domBlock);\n } else {\n domBlocks.push(domBlock);\n }\n });\n return <ZPage>{domBlocks}</ZPage>;\n }\n}\n","import { createZovaComponentPage } from 'zova';\nimport { ControllerPageEntry } from '../../page/entry/controller.jsx';\nimport { ControllerPageEntrySchemaParams } from '../../page/entry/controller.jsx';\nexport let NSControllerPageEntry;\n(function (_NSControllerPageEntry) {\n const paramsSchema = _NSControllerPageEntry.paramsSchema = ControllerPageEntrySchemaParams;\n})(NSControllerPageEntry || (NSControllerPageEntry = {}));\nexport const ZPageEntry = createZovaComponentPage(ControllerPageEntry, undefined, undefined);","import { createZovaComponentPage } from 'zova';\nimport { ControllerPageEntryCreate } from '../../page/entryCreate/controller.jsx';\nimport { ControllerPageEntryCreateSchemaParams } from '../../page/entryCreate/controller.jsx';\nexport let NSControllerPageEntryCreate;\n(function (_NSControllerPageEntryCreate) {\n const paramsSchema = _NSControllerPageEntryCreate.paramsSchema = ControllerPageEntryCreateSchemaParams;\n})(NSControllerPageEntryCreate || (NSControllerPageEntryCreate = {}));\nexport const ZPageEntryCreate = createZovaComponentPage(ControllerPageEntryCreate, undefined, undefined);","import { createZovaComponentPage } from 'zova';\nimport { ControllerPageResource } from '../../page/resource/controller.jsx';\nimport { ControllerPageResourceSchemaParams } from '../../page/resource/controller.jsx';\nexport let NSControllerPageResource;\n(function (_NSControllerPageResource) {\n const paramsSchema = _NSControllerPageResource.paramsSchema = ControllerPageResourceSchemaParams;\n})(NSControllerPageResource || (NSControllerPageResource = {}));\nexport const ZPageResource = createZovaComponentPage(ControllerPageResource, undefined, undefined);","import { ZPageEntry } from './.metadata/page/entry.js';\nimport { ZPageEntryCreate } from './.metadata/page/entryCreate.js';\nimport { ZPageResource } from './.metadata/page/resource.js';\nexport const routes = [{\n name: 'resource',\n path: ':resource',\n component: ZPageResource,\n meta: {\n tabKey\n }\n}, {\n name: 'entryCreate',\n path: ':resource/create',\n component: ZPageEntryCreate,\n meta: {\n tabKey\n }\n}, {\n name: 'entry',\n path: ':resource/:id/:formScene?',\n component: ZPageEntry,\n meta: {\n tabKey\n }\n}];\nfunction tabKey(route) {\n return `/rest/resource/${encodeURIComponent(route.params.resource)}`;\n}","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\n// eslint-disable\n/** model: begin */\nexport * from '../model/resource.js';\nimport 'zova-module-a-model';\n/** model: end */\n/** model: begin */\nimport { ModelResource } from '../model/resource.js';\nimport 'zova';\n/** model: end */\n/** controller: begin */\nexport * from '../page/entry/controller.jsx';\nexport * from '../page/entryCreate/controller.jsx';\nexport * from '../page/resource/controller.jsx';\nimport 'zova';\n/** controller: end */\n/** controller: begin */\nimport { ControllerPageEntry } from '../page/entry/controller.jsx';\nimport { ControllerPageEntryCreate } from '../page/entryCreate/controller.jsx';\nimport { ControllerPageResource } from '../page/resource/controller.jsx';\nimport 'zova';\n/** controller: end */\n/** pages: begin */\nexport * from './page/entry.js';\nimport { NSControllerPageEntry } from './page/entry.js';\nexport * from './page/entryCreate.js';\nimport { NSControllerPageEntryCreate } from './page/entryCreate.js';\nexport * from './page/resource.js';\nimport { NSControllerPageResource } from './page/resource.js';\nexport * from '../routes.js';\nimport 'zova';\nexport const pagePathSchemas = {};\nexport const pageNameSchemas = {\n 'rest-resource:entry': {\n params: NSControllerPageEntry.paramsSchema\n },\n 'rest-resource:entryCreate': {\n params: NSControllerPageEntryCreate.paramsSchema\n },\n 'rest-resource:resource': {\n params: NSControllerPageResource.paramsSchema\n }\n};\n/** pages: end */\n\n/** scope: begin */\nimport { BeanScopeBase } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\nexport let ScopeModuleRestResource = (_dec = Scope(), _dec2 = __z_BeanInfo({\n module: \"rest-resource\"\n}), _dec(_class = _dec2(_class = class ScopeModuleRestResource extends BeanScopeBase {}) || _class) || _class);\nimport 'zova';\n\n/** scope: end */"],"mappings":"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"}
@@ -6,6 +6,21 @@ import { BeanModelBase } from 'zova-module-a-model';
6
6
  import { ScopeModuleAOpenapi } from 'zova-module-a-openapi';
7
7
  export interface IModelOptionsResource extends IDecoratorModelOptions {
8
8
  }
9
+ interface IModelResourceQueryItemOptions<TData> {
10
+ id: TableIdentity;
11
+ action: string;
12
+ queryFn: () => Promise<TData>;
13
+ meta?: {
14
+ disableSuspenseOnInit?: boolean;
15
+ };
16
+ }
17
+ interface IModelResourceMutationItemOptions<TData = void, TVariables = void> {
18
+ id: TableIdentity;
19
+ action: string;
20
+ mutationFn: (params: TVariables) => Promise<TData>;
21
+ onSuccess?: (data: TData, variables: TVariables, context: unknown) => void | Promise<void>;
22
+ invalidateSelect?: boolean;
23
+ }
9
24
  export declare class ModelResource<Entity = any, EntityCreate = Partial<Entity>, EntityUpdate = Partial<Entity>> extends BeanModelBase {
10
25
  resource: string;
11
26
  resourceApi: string;
@@ -21,8 +36,10 @@ export declare class ModelResource<Entity = any, EntityCreate = Partial<Entity>,
21
36
  protected __init__(resource: string): Promise<void>;
22
37
  selectGeneral(actionPath?: string, query?: ITableQuery): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseQueryReturnType<ITableRes<Entity>, Error>>;
23
38
  select(query?: ITableQuery): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseQueryReturnType<ITableRes<Entity>, Error>>;
24
- view(id: TableIdentity): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseQueryReturnType<NonNullable<Awaited<Entity>> | null, Error>>;
39
+ queryItem<TData>(options: IModelResourceQueryItemOptions<TData>): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseQueryReturnType<TData, Error>>;
40
+ view(id: TableIdentity): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseQueryReturnType<Entity | null, Error>>;
25
41
  create(): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseMutationReturnType<void, Error, EntityCreate, unknown>>;
42
+ mutationItem<TData = void, TVariables = void>(options: IModelResourceMutationItemOptions<TData, TVariables>): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseMutationReturnType<TData, Error, TVariables, unknown>>;
26
43
  update(id: TableIdentity): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseMutationReturnType<void, Error, EntityUpdate, unknown>>;
27
44
  delete(id: TableIdentity): import("vue").UnwrapNestedRefs<import("@tanstack/vue-query").UseMutationReturnType<void, Error, void, unknown>>;
28
45
  get apiSchemasSelect(): import("zova-module-a-openapi").IOpenapiSchemas;
@@ -34,6 +51,10 @@ export declare class ModelResource<Entity = any, EntityCreate = Partial<Entity>,
34
51
  getFormMutationSubmit(formMeta: IFormMeta, id?: TableIdentity): DataMutation | undefined;
35
52
  getFormData(formMeta: IFormMeta, id?: TableIdentity): Entity | EntityCreate | EntityUpdate | undefined;
36
53
  getQueryDataDefaultValue(schemaName?: SchemaObject | string): EntityCreate | undefined;
54
+ protected keySelect(actionPath?: string, query?: ITableQuery): readonly ["select", string, string];
55
+ protected keyItemRoot(id: TableIdentity): readonly ["item", TableIdentity];
56
+ protected keyItem(id: TableIdentity, action: string): readonly ["item", TableIdentity, string];
37
57
  private _bootstrap;
38
58
  }
59
+ export {};
39
60
  //# sourceMappingURL=resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/model/resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,2BAA2B,EAC3B,WAAW,EACX,SAAS,EACT,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAkB,aAAa,EAAS,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAA2B,MAAM,uBAAuB,CAAC;AAErF,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;CAAG;AAExE,qBAGa,aAAa,CACxB,MAAM,GAAG,GAAG,EACZ,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,EAC9B,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAC9B,SAAQ,aAAa;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,YAAY,EAAE,aAAa,CAAC;IAC5B,UAAU,CAAC,EAAE,2BAA2B,CAAC;IACzC,YAAY,CAAC,EAAE,2BAA2B,CAAC;IAC3C,YAAY,CAAC,EAAE,2BAA2B,CAAC;IAC3C,YAAY,CAAC,EAAE,2BAA2B,CAAC;IAC3C,SAAS,CAAC,EAAE,2BAA2B,CAAC;IACxC,WAAW,CAAC,EAAE,2BAA2B,CAAC;IAGjD,cAAc,EAAE,mBAAmB,CAAC;cAEpB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAiCzC,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW;IActD,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW;IAI1B,IAAI,CAAC,EAAE,EAAE,aAAa;IActB,MAAM;IAgBN,MAAM,CAAC,EAAE,EAAE,aAAa;IAiBxB,MAAM,CAAC,EAAE,EAAE,aAAa;IAgBxB,IAAW,gBAAgB,oDAE1B;IAED,IAAW,cAAc,oDAExB;IAED,IAAW,gBAAgB,oDAE1B;IAED,IAAW,gBAAgB,oDAE1B;IAEM,aAAa,CAAC,QAAQ,EAAE,SAAS;IAOjC,iBAAiB,CAAC,QAAQ,EAAE,SAAS;IAQrC,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,SAAS;IASxF,WAAW,CAChB,QAAQ,EAAE,SAAS,EACnB,EAAE,CAAC,EAAE,aAAa,GACjB,MAAM,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS;IAQ5C,wBAAwB,CAAC,UAAU,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS;YAQ/E,UAAU;CAOzB"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/model/resource.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/page/entry/controller.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,2BAA2B,EAC3B,aAAa,EACd,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAkC,MAAM,MAAM,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAMnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,+BAA+B;;;;iBAI1C,CAAC;AAEH,qBACa,mBAAoB,SAAQ,sBAAsB;IAC7D,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,EAAE,aAAa,CAAC;IAC5B,UAAU,CAAC,EAAE,2BAA2B,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;IAEjB,IACI,eAAe,IAAI,aAAa,CAEnC;IAED,IAAI,QAAQ,WAEX;IAED,IAAI,OAAO,uBAEV;IAED,IAAI,SAAS,kBAKZ;cAEe,QAAQ;IAiBxB,OAAO,CAAC,WAAW;IAInB,SAAS,CAAC,MAAM;CAwBjB"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/page/entry/controller.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,2BAA2B,EAC3B,aAAa,EACd,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAkC,MAAM,MAAM,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAMnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,+BAA+B;;;;iBAI1C,CAAC;AAEH,qBACa,mBAAoB,SAAQ,sBAAsB;IAC7D,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,EAAE,aAAa,CAAC;IAC5B,UAAU,CAAC,EAAE,2BAA2B,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;IAEjB,IACI,eAAe,IAAI,aAAa,CAEnC;IAED,IAAI,QAAQ,WAEX;IAED,IAAI,OAAO,uBAEV;IAED,IAAI,SAAS,kBAKZ;cAEe,QAAQ;IAgBxB,OAAO,CAAC,WAAW;IAInB,SAAS,CAAC,MAAM;CAwBjB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zova-module-rest-resource",
3
- "version": "5.1.35",
4
- "gitHead": "3380f8c5d3989242b60dc2a34cbb330f74335cbe",
3
+ "version": "5.1.40",
4
+ "gitHead": "1a39e8008e1b48001cfeff475ddd53a2a0d867c4",
5
5
  "description": "",
6
6
  "keywords": [
7
7
  "Zova Module"
@@ -27,7 +27,7 @@
27
27
  "tsc:publish": "npm run clean && node ../../../../../packages-cli/cli/src/bin/zova.ts :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
28
28
  "prepublishOnly": "npm run tsc:publish",
29
29
  "prepack": "clean-package",
30
- "postpack": "clean-package restore && npm run clean"
30
+ "postpack": "clean-package restore"
31
31
  },
32
32
  "title": "rest-resource"
33
33
  }
@@ -18,6 +18,23 @@ import { ScopeModuleAOpenapi, SymbolOpenapiSchemaName } from 'zova-module-a-open
18
18
 
19
19
  export interface IModelOptionsResource extends IDecoratorModelOptions {}
20
20
 
21
+ interface IModelResourceQueryItemOptions<TData> {
22
+ id: TableIdentity;
23
+ action: string;
24
+ queryFn: () => Promise<TData>;
25
+ meta?: {
26
+ disableSuspenseOnInit?: boolean;
27
+ };
28
+ }
29
+
30
+ interface IModelResourceMutationItemOptions<TData = void, TVariables = void> {
31
+ id: TableIdentity;
32
+ action: string;
33
+ mutationFn: (params: TVariables) => Promise<TData>;
34
+ onSuccess?: (data: TData, variables: TVariables, context: unknown) => void | Promise<void>;
35
+ invalidateSelect?: boolean;
36
+ }
37
+
21
38
  @Model<IModelOptionsResource>({
22
39
  enableSelector: true,
23
40
  })
@@ -74,9 +91,8 @@ export class ModelResource<
74
91
  }
75
92
 
76
93
  selectGeneral(actionPath?: string, query?: ITableQuery) {
77
- const queryHash = hashkey(query);
78
94
  return this.$useStateData({
79
- queryKey: ['select', actionPath ?? '', queryHash],
95
+ queryKey: this.keySelect(actionPath, query),
80
96
  queryFn: async () => {
81
97
  const apiPath = actionPath ? `${this.resourceApi}/${actionPath}` : this.resourceApi;
82
98
  return this.$fetch.get<any, ITableRes<Entity>>(
@@ -91,10 +107,20 @@ export class ModelResource<
91
107
  return this.selectGeneral(undefined, query);
92
108
  }
93
109
 
94
- view(id: TableIdentity) {
110
+ queryItem<TData>(options: IModelResourceQueryItemOptions<TData>) {
111
+ const { id, action, queryFn, meta } = options;
95
112
  if (isNil(id)) throw new Error('row id cannot empty');
96
113
  return this.$useStateData({
97
- queryKey: ['get', id],
114
+ queryKey: this.keyItem(id, action),
115
+ queryFn,
116
+ meta,
117
+ });
118
+ }
119
+
120
+ view(id: TableIdentity) {
121
+ return this.queryItem<Entity | null>({
122
+ id,
123
+ action: 'view',
98
124
  queryFn: async () => {
99
125
  const res = await this.$fetch.get<any, Entity>(
100
126
  this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, { id }),
@@ -121,9 +147,26 @@ export class ModelResource<
121
147
  });
122
148
  }
123
149
 
150
+ mutationItem<TData = void, TVariables = void>(options: IModelResourceMutationItemOptions<TData, TVariables>) {
151
+ const { id, action, mutationFn, onSuccess, invalidateSelect = true } = options;
152
+ if (isNil(id)) throw new Error('row id cannot empty');
153
+ return this.$useMutationData<TData, TVariables>({
154
+ mutationKey: [...this.keyItem(id, action), 'mutation'],
155
+ mutationFn,
156
+ onSuccess: async (data, variables, context) => {
157
+ if (invalidateSelect) {
158
+ this.$invalidateQueries({ queryKey: ['select'] });
159
+ }
160
+ this.$invalidateQueries({ queryKey: this.keyItemRoot(id) });
161
+ await onSuccess?.(data, variables, context);
162
+ },
163
+ });
164
+ }
165
+
124
166
  update(id: TableIdentity) {
125
- return this.$useMutationData<void, EntityUpdate>({
126
- mutationKey: ['update', id],
167
+ return this.mutationItem<void, EntityUpdate>({
168
+ id,
169
+ action: 'update',
127
170
  mutationFn: async params => {
128
171
  return this.$fetch.patch<any, void, EntityUpdate>(
129
172
  this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, { id }),
@@ -131,26 +174,19 @@ export class ModelResource<
131
174
  this.sys.util.apiActionConfigPrepare(),
132
175
  );
133
176
  },
134
- onSuccess: () => {
135
- this.$invalidateQueries({ queryKey: ['select'] });
136
- this.$invalidateQueries({ queryKey: ['get', id] });
137
- },
138
177
  });
139
178
  }
140
179
 
141
180
  delete(id: TableIdentity) {
142
- return this.$useMutationData<void, void>({
143
- mutationKey: ['delete', id],
181
+ return this.mutationItem<void, void>({
182
+ id,
183
+ action: 'delete',
144
184
  mutationFn: async () => {
145
185
  return this.$fetch.delete<any, void, void>(
146
186
  this.sys.util.apiActionPathTranslate(`${this.resourceApi}/:id`, { id }),
147
187
  this.sys.util.apiActionConfigPrepare(),
148
188
  );
149
189
  },
150
- onSuccess: () => {
151
- this.$invalidateQueries({ queryKey: ['select'] });
152
- this.$invalidateQueries({ queryKey: ['get', id] });
153
- },
154
190
  });
155
191
  }
156
192
 
@@ -213,6 +249,20 @@ export class ModelResource<
213
249
  return this.$sdk.getSchemaDefaultValue(schemaName) as EntityCreate | undefined;
214
250
  }
215
251
 
252
+ protected keySelect(actionPath?: string, query?: ITableQuery) {
253
+ return ['select', actionPath ?? '', hashkey(query)] as const;
254
+ }
255
+
256
+ protected keyItemRoot(id: TableIdentity) {
257
+ if (isNil(id)) throw new Error('row id cannot empty');
258
+ return ['item', id] as const;
259
+ }
260
+
261
+ protected keyItem(id: TableIdentity, action: string) {
262
+ if (isNil(id)) throw new Error('row id cannot empty');
263
+ return ['item', id, action] as const;
264
+ }
265
+
216
266
  private async _bootstrap() {
217
267
  const queryBootstrap = await $QueryAutoLoad(() => this.$sdk.getBootstrap(this.resource));
218
268
  if (!queryBootstrap?.data) {
@@ -52,8 +52,7 @@ export class ControllerPageEntry extends BeanControllerPageBase {
52
52
 
53
53
  protected async __init__() {
54
54
  this.formMeta = this.$computed(() => {
55
- const formScene = this.formScene;
56
- return { ...formMetaFromFormScene(formScene), formScene };
55
+ return formMetaFromFormScene(this.formScene);
57
56
  });
58
57
  this.formProvider = this.$computed(() => {
59
58
  return this.$$modelResource.formProvider;