@postxl/generators 1.0.14 → 1.1.0

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 (37) hide show
  1. package/dist/backend-router-trpc/generators/model-routes.generator.js +24 -3
  2. package/dist/backend-router-trpc/generators/model-routes.generator.js.map +1 -1
  3. package/dist/backend-router-trpc/router-trpc.generator.d.ts +2 -0
  4. package/dist/backend-router-trpc/router-trpc.generator.js +2 -0
  5. package/dist/backend-router-trpc/router-trpc.generator.js.map +1 -1
  6. package/dist/backend-view/model-view-service.generator.js +276 -0
  7. package/dist/backend-view/model-view-service.generator.js.map +1 -1
  8. package/dist/backend-view/template/filter.utils.test.ts +387 -0
  9. package/dist/backend-view/template/filter.utils.ts +218 -0
  10. package/dist/backend-view/view.generator.js +5 -1
  11. package/dist/backend-view/view.generator.js.map +1 -1
  12. package/dist/frontend-admin/generators/model-admin-page.generator.js +38 -8
  13. package/dist/frontend-admin/generators/model-admin-page.generator.js.map +1 -1
  14. package/dist/frontend-core/frontend.generator.js +1 -0
  15. package/dist/frontend-core/frontend.generator.js.map +1 -1
  16. package/dist/frontend-core/template/src/components/admin/table-filter-header-icon.tsx +30 -0
  17. package/dist/frontend-core/template/src/components/admin/table-filter.tsx +537 -0
  18. package/dist/frontend-core/template/src/components/ui/checkbox/checkbox.stories.tsx +2 -1
  19. package/dist/frontend-core/template/src/components/ui/checkbox/checkbox.tsx +10 -1
  20. package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-column-header.tsx +32 -2
  21. package/dist/frontend-core/template/src/components/ui/data-grid/data-grid-types.ts +10 -2
  22. package/dist/frontend-core/template/src/styles/styles.css +14 -2
  23. package/dist/frontend-tables/generators/model-table.generator.js +69 -46
  24. package/dist/frontend-tables/generators/model-table.generator.js.map +1 -1
  25. package/dist/frontend-trpc-client/generators/model-hook.generator.js +33 -5
  26. package/dist/frontend-trpc-client/generators/model-hook.generator.js.map +1 -1
  27. package/dist/frontend-trpc-client/trpc-client.generator.d.ts +8 -0
  28. package/dist/frontend-trpc-client/trpc-client.generator.js +2 -0
  29. package/dist/frontend-trpc-client/trpc-client.generator.js.map +1 -1
  30. package/dist/types/generators/model-type.generator.d.ts +2 -0
  31. package/dist/types/generators/model-type.generator.js +241 -0
  32. package/dist/types/generators/model-type.generator.js.map +1 -1
  33. package/dist/types/template/filter.types.ts +70 -0
  34. package/dist/types/types.generator.d.ts +25 -0
  35. package/dist/types/types.generator.js +17 -0
  36. package/dist/types/types.generator.js.map +1 -1
  37. package/package.json +2 -2
@@ -41,6 +41,8 @@ const Generator = __importStar(require("@postxl/generator"));
41
41
  function generateModelRoutes({ model, context }) {
42
42
  const imports = Generator.ImportGenerator.from(model.trpcRoute._filePath)
43
43
  .add(model.types.id.decoder)
44
+ .add(model.types.filter.decoder)
45
+ .add(model.types.filter.field)
44
46
  .add({ name: context.trpcRouter._middleware.auth.name, location: context.trpcRouter._middleware._filePath })
45
47
  .add({ name: context.trpcRouter._shared.procedure.name, location: context.trpcRouter._shared._filePath })
46
48
  .add({ name: context.trpcRouter._shared.router.name, location: context.trpcRouter._shared._filePath });
@@ -60,8 +62,10 @@ function generateModelRoutes({ model, context }) {
60
62
  }
61
63
  }
62
64
  const defaultValueMethod = `getDefault: ${context.trpcRouter._shared.procedure.name}.query(({ ctx }) => ctx.view.${model.view.service.variableName}.data.defaultValue),`;
65
+ const variableName = model.view.service.variableName;
63
66
  return /* ts */ `
64
67
 
68
+ import { z } from 'zod'
65
69
  ${imports.generate()}
66
70
 
67
71
  export const ${model.trpcRoute.name} = router({
@@ -70,15 +74,32 @@ function generateModelRoutes({ model, context }) {
70
74
  ${model.trpcRoute.get.name}: procedure
71
75
  .use(authMiddleware)
72
76
  .input(${model.types.id.decoder.name})
73
- .query(({ input, ctx }) => ctx.view.${model.view.service.variableName}.get({ id: input, user: ctx.user})),
77
+ .query(({ input, ctx }) => ctx.view.${variableName}.get({ id: input, user: ctx.user})),
74
78
 
75
79
  ${model.trpcRoute.getMap.name}: procedure
76
80
  .use(authMiddleware)
77
- .query(({ ctx }) => ctx.view.${model.view.service.variableName}.getAll(ctx.user)),
81
+ .query(({ ctx }) => ctx.view.${variableName}.getAll(ctx.user)),
78
82
 
79
83
  ${model.trpcRoute.getList.name}: procedure
80
84
  .use(authMiddleware)
81
- .query(({ ctx }) => ctx.view.${model.view.service.variableName}.getList(ctx.user)),
85
+ .query(({ ctx }) => ctx.view.${variableName}.getList(ctx.user)),
86
+
87
+ ${model.trpcRoute.getFiltered.name}: procedure
88
+ .use(authMiddleware)
89
+ .input(${model.types.filter.decoder.name})
90
+ .query(({ input, ctx }) => ctx.view.${variableName}.getFiltered({ filters: input, user: ctx.user })),
91
+
92
+ ${model.trpcRoute.getFilterOptions.name}: procedure
93
+ .use(authMiddleware)
94
+ .input(
95
+ z.object({
96
+ field: z.enum(${model.types.filter.field.name}),
97
+ filters: ${model.types.filter.decoder.name},
98
+ }),
99
+ )
100
+ .query(({ input, ctx }) =>
101
+ ctx.view.${variableName}.getFilterOptions({ field: input.field, filters: input.filters, user: ctx.user }),
102
+ ),
82
103
 
83
104
  ${mutations.join('\n')}
84
105
 
@@ -1 +1 @@
1
- {"version":3,"file":"model-routes.generator.js","sourceRoot":"","sources":["../../../src/backend-router-trpc/generators/model-routes.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,kDAkDC;AAzDD,6DAA8C;AAI9C;;GAEG;AACH,SAAgB,mBAAmB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAyD;IAC3G,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;SACtE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC;SAC3B,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;SAC3G,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;SACxG,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAExG,MAAM,SAAS,GAAa,EAAE,CAAA;IAE9B,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;YACxE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,SAAQ;YACV,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACnC,SAAS,CAAC,IAAI,CAAC;UACX,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI;iBAClD,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI;mBACtC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;gEACkB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,aAAa,MAAM,CAAC,IAAI;OAC1G,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,eAAe,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,gCAAgC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,sBAAsB,CAAA;IAExK,OAAO,QAAQ,CAAC;;IAEd,OAAO,CAAC,QAAQ,EAAE;;iBAEL,KAAK,CAAC,SAAS,CAAC,IAAI;MAC/B,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB;;MAE1D,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI;;eAEf,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;4CACE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY;;MAErE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;;qCAEI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY;;MAE9D,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI;;qCAEG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY;;MAE9D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;;GAGvB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"model-routes.generator.js","sourceRoot":"","sources":["../../../src/backend-router-trpc/generators/model-routes.generator.ts"],"names":[],"mappings":"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"}
@@ -101,6 +101,8 @@ export type TrpcRouterModelContext = Generator.ImportableFunction & {
101
101
  get: Generator.ImportableFunction;
102
102
  getMap: Generator.ImportableFunction;
103
103
  getList: Generator.ImportableFunction;
104
+ getFiltered: Generator.ImportableFunction;
105
+ getFilterOptions: Generator.ImportableFunction;
104
106
  };
105
107
  export type RouterEnumContext = Generator.ImportableFunction;
106
108
  export declare const generatorId: string & import("zod").BRAND<"PXL.GeneratorInterfaceId">;
@@ -183,6 +183,8 @@ function registerModelRouter(model) {
183
183
  get: { name: Generator.toFunctionName(`get`), location },
184
184
  getMap: { name: Generator.toFunctionName(`getMap`), location },
185
185
  getList: { name: Generator.toFunctionName(`getList`), location },
186
+ getFiltered: { name: Generator.toFunctionName(`getFiltered`), location },
187
+ getFilterOptions: { name: Generator.toFunctionName(`getFilterOptions`), location },
186
188
  };
187
189
  return { ...model, trpcRoute: router };
188
190
  }
@@ -1 +1 @@
1
- {"version":3,"file":"router-trpc.generator.js","sourceRoot":"","sources":["../../src/backend-router-trpc/router-trpc.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router-trpc.generator.js","sourceRoot":"","sources":["../../src/backend-router-trpc/router-trpc.generator.ts"],"names":[],"mappings":"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"}
@@ -36,12 +36,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.generateModelViewService = generateModelViewService;
37
37
  exports.generateModelViewService_NoRepository = generateModelViewService_NoRepository;
38
38
  const Generator = __importStar(require("@postxl/generator"));
39
+ const model_type_generator_1 = require("../types/generators/model-type.generator");
39
40
  function generateModelViewService({ model, context }) {
40
41
  const imports = Generator.ImportGenerator.from(model.view.service.location);
41
42
  imports.addType(model.types);
42
43
  imports.addType({ name: Generator.toTypeName('User'), location: context.types.location });
43
44
  imports.addType(model.types.id);
45
+ imports.addType(model.types.filter.type);
46
+ imports.addType(model.types.filter.fieldType);
47
+ imports.add(model.types.filter.config);
44
48
  imports.add(context.view.service);
49
+ imports.addImport({
50
+ items: [
51
+ Generator.toFunctionName('applyRangeFilters'),
52
+ Generator.toFunctionName('getMatches'),
53
+ Generator.toFunctionName('getOptions'),
54
+ Generator.toFunctionName('formatAndSortOptions'),
55
+ ],
56
+ from: Generator.toBackendModuleLocation('@view/filter.utils'),
57
+ });
58
+ imports.addImport({
59
+ items: [Generator.toFunctionName('omit')],
60
+ from: Generator.toBackendModuleLocation('@postxl/utils'),
61
+ });
45
62
  if (model.repository.kind === 'NoRepository') {
46
63
  return generateModelViewService_NoRepository({ model, context, imports });
47
64
  }
@@ -54,6 +71,7 @@ function generateModelViewService_HasRepository({ model, context, imports, }) {
54
71
  return '';
55
72
  }
56
73
  imports.add(model.repository);
74
+ const filteringMethods = generateFilteringMethods({ model, imports });
57
75
  return `
58
76
  import { Inject, Injectable, forwardRef } from '@nestjs/common'
59
77
 
@@ -118,6 +136,9 @@ export class ${model.view.service.name} {
118
136
 
119
137
  return result
120
138
  }
139
+
140
+ ${filteringMethods}
141
+
121
142
  ${generateAuthorizeMethod({ model, context })}
122
143
  }
123
144
  `;
@@ -181,6 +202,22 @@ export class ${model.view.service.name} {
181
202
  return result
182
203
  }
183
204
 
205
+ /**
206
+ * Returns a filtered list of ${model.userFriendlyNamePlural}.
207
+ */
208
+ public async getFiltered({ filters, user }: { filters: ${model.types.filter.type.name}, user: User }): Promise<${model.types.name}[]> {
209
+ // TODO: Implement this method.
210
+ return this.getList(user)
211
+ }
212
+
213
+ /**
214
+ * Returns the filter options for a given field.
215
+ */
216
+ public async getFilterOptions({ field, filters, user }: { field: ${model.types.filter.field.name}, filters: ${model.types.filter.type.name}, user: User }): Promise<any> {
217
+ // TODO: Implement this method.
218
+ return []
219
+ }
220
+
184
221
  ${generateAuthorizeMethod({ model, context })}
185
222
  }`;
186
223
  }
@@ -193,4 +230,243 @@ function generateAuthorizeMethod({ model }) {
193
230
  return Promise.resolve() // NOSONAR - adhere to the same interface
194
231
  }`;
195
232
  }
233
+ function generateFilteringMethods({ model, imports, }) {
234
+ const filterFields = [];
235
+ const usedMatchMethods = new Set();
236
+ // Generate filter conditions for all fields, including nested DU fields
237
+ for (const field of model.fields.values()) {
238
+ const conditions = getFilterConditionsForField({
239
+ field,
240
+ usedMatchMethods,
241
+ });
242
+ filterFields.push(...conditions);
243
+ }
244
+ if (usedMatchMethods.size > 0) {
245
+ imports.addImport({
246
+ items: Array.from(usedMatchMethods).map((m) => Generator.toFunctionName(m)),
247
+ from: Generator.toBackendModuleLocation('@view/filter.utils'),
248
+ });
249
+ }
250
+ return `
251
+ /**
252
+ * Returns a filtered list of ${model.userFriendlyNamePlural}.
253
+ * For really large datasets, consider implementing server-side filtering in the repository instead.
254
+ */
255
+ public async getFiltered({ filters, user }: { filters: ${model.types.filter.type.name}, user: User }): Promise<${model.types.name}[]> {
256
+ const allItems = await this.getList(user)
257
+ return this.filter${model._conjugated.PascalCasePlural}(allItems, filters)
258
+ }
259
+
260
+ /**
261
+ * Returns the filter options for a given field.
262
+ * For really large datasets, consider implementing server-side filtering in the repository instead.
263
+ */
264
+ public async getFilterOptions({
265
+ field,
266
+ filters,
267
+ user,
268
+ }: {
269
+ field: ${model.types.filter.fieldType.name}
270
+ filters: ${model.types.filter.type.name}
271
+ user: User
272
+ }): Promise<{ value: string; label: string; hasMatches: boolean }[]> {
273
+ const allItems = await this.getList(user)
274
+ const reducedFilters = omit(filters, field)
275
+ const filteredItems = this.filter${model._conjugated.PascalCasePlural}(allItems, reducedFilters)
276
+
277
+ const config = ${model.types.filter.config.name}[field]
278
+ const accessor = this.getFieldAccessor(field)
279
+
280
+ // If we are getting options for a number/date field, we want to respect the range filter (so options outside the range are grayed out), but still ignore the values filter (so we can see all options).
281
+ const itemsWithRange = applyRangeFilters(filteredItems, accessor, config, filters)
282
+
283
+ let referencedItems: Map<string, any> | undefined
284
+ if (config.kind === 'relation') {
285
+ referencedItems = await (this.viewService as any)[config.referencedModelViewServiceVariableName]?.getAll(user)
286
+ }
287
+
288
+ const { matches, options } = {
289
+ matches: getMatches(itemsWithRange, accessor),
290
+ options: getOptions(allItems, accessor, config, referencedItems),
291
+ }
292
+
293
+ return formatAndSortOptions(options, matches)
294
+ }
295
+
296
+ /**
297
+ * Helper method to filter ${model.userFriendlyNamePlural} based on provided filters.
298
+ */
299
+ private filter${model._conjugated.PascalCasePlural}(
300
+ ${model._conjugated.camelCasePlural}: ${model.types.name}[],
301
+ filters: ${model.types.filter.type.name},
302
+ ): ${model.types.name}[] {
303
+ return ${model._conjugated.camelCasePlural}.filter((item) => {
304
+ ${filterFields.join('')}
305
+ return true
306
+ })
307
+ }
308
+
309
+ ${generateGetFieldAccessorMethod({ model })}
310
+ `;
311
+ }
312
+ function generateGetFieldAccessorMethod({ model }) {
313
+ const accessors = [];
314
+ // Generate accessor cases for all fields, including nested DU fields
315
+ for (const field of model.fields.values()) {
316
+ const cases = generateFieldAccessorCases({
317
+ field,
318
+ model,
319
+ });
320
+ accessors.push(...cases);
321
+ }
322
+ const defaultAccessor = `return (item: ${model.types.name}) => (item as any)[field]`;
323
+ // Add default case
324
+ accessors.push(` default:
325
+ ${defaultAccessor}`);
326
+ return `/**
327
+ * Returns an accessor function for the given filter field.
328
+ */
329
+ private getFieldAccessor(field: ${model.types.filter.fieldType.name}): (item: ${model.types.name}) => any {
330
+ ${accessors.length > 1
331
+ ? `switch (field) {
332
+ ${accessors.join('\n')}
333
+ }`
334
+ : defaultAccessor}
335
+ }`;
336
+ }
337
+ function generateFieldAccessorCases(params) {
338
+ const { field, model, duParentFieldName, duMemberType } = params;
339
+ const result = [];
340
+ // Handle discriminated union: add the discriminant field plus all nested fields
341
+ if (field.kind === 'discriminatedUnion') {
342
+ // Add the discriminant field itself
343
+ const caseString = generateFieldAccessorCase({ field, model, duParentFieldName, duMemberType });
344
+ if (caseString) {
345
+ result.push(caseString);
346
+ }
347
+ // Add common fields
348
+ for (const commonField of field.commonFields.values()) {
349
+ result.push(...generateFieldAccessorCases({
350
+ field: commonField,
351
+ model,
352
+ duParentFieldName: field.name,
353
+ }));
354
+ }
355
+ // Add member-specific fields
356
+ for (const member of field.members.values()) {
357
+ for (const memberField of member.fields.values()) {
358
+ result.push(...generateFieldAccessorCases({
359
+ field: memberField,
360
+ model,
361
+ duParentFieldName: field.name,
362
+ duMemberType: member.type,
363
+ }));
364
+ }
365
+ }
366
+ }
367
+ else {
368
+ // Regular field
369
+ const caseString = generateFieldAccessorCase({ field, model, duParentFieldName, duMemberType });
370
+ if (caseString) {
371
+ result.push(caseString);
372
+ }
373
+ }
374
+ return result;
375
+ }
376
+ function generateFieldAccessorCase({ field, model, duParentFieldName, duMemberType, }) {
377
+ // For discriminated union fields at top level, we need to return the discriminant (type) value
378
+ if (field.kind === 'discriminatedUnion' && !duParentFieldName) {
379
+ return ` case '${field.name}':
380
+ return (item: ${model.types.name}) => item.${field.name}?.type`;
381
+ }
382
+ // Skip generating a case for simple top-level fields - the default case handles them
383
+ if (!duParentFieldName) {
384
+ return null;
385
+ }
386
+ const caseKey = `'${(0, model_type_generator_1.getFilterFieldName)(field.name, duParentFieldName)}'`;
387
+ let accessorExpression;
388
+ if (duMemberType) {
389
+ // Member-specific field: only return value if the member type matches
390
+ accessorExpression = `item.${duParentFieldName}?.type === '${duMemberType}' ? item.${duParentFieldName}?.${field.name} : undefined`;
391
+ }
392
+ else {
393
+ // Common field in DU
394
+ accessorExpression = `item.${duParentFieldName}?.${field.name}`;
395
+ }
396
+ return ` case ${caseKey}:
397
+ return (item: ${model.types.name}) => ${accessorExpression}`;
398
+ }
399
+ /**
400
+ * Returns all filter conditions for a field, including nested DU fields.
401
+ */
402
+ function getFilterConditionsForField(params) {
403
+ const { field, usedMatchMethods, duParentFieldName, duMemberType } = params;
404
+ const result = [];
405
+ // Handle discriminated union: add the discriminant field plus all nested fields
406
+ if (field.kind === 'discriminatedUnion') {
407
+ // Add the discriminant field itself
408
+ result.push(generateFilterCondition({ field, usedMatchMethods, duParentFieldName, duMemberType }));
409
+ // Add common fields
410
+ for (const commonField of field.commonFields.values()) {
411
+ result.push(...getFilterConditionsForField({
412
+ field: commonField,
413
+ usedMatchMethods,
414
+ duParentFieldName: field.name,
415
+ }));
416
+ }
417
+ // Add member-specific fields
418
+ for (const member of field.members.values()) {
419
+ for (const memberField of member.fields.values()) {
420
+ result.push(...getFilterConditionsForField({
421
+ field: memberField,
422
+ usedMatchMethods,
423
+ duParentFieldName: field.name,
424
+ duMemberType: member.type,
425
+ }));
426
+ }
427
+ }
428
+ }
429
+ else {
430
+ // Regular field
431
+ result.push(generateFilterCondition(params));
432
+ }
433
+ return result;
434
+ }
435
+ /**
436
+ * Generates a single filter condition for a field.
437
+ */
438
+ function generateFilterCondition({ field, usedMatchMethods, duParentFieldName, duMemberType, }) {
439
+ const valueType = (0, model_type_generator_1.getFilterValueType)(field);
440
+ let matchMethod = 'matchFilter';
441
+ if (valueType === 'number') {
442
+ matchMethod = 'matchNumberFilter';
443
+ }
444
+ else if (valueType === 'date') {
445
+ matchMethod = 'matchDateFilter';
446
+ }
447
+ usedMatchMethods.add(matchMethod);
448
+ // Build the accessor path for the field value
449
+ let accessor;
450
+ if (duParentFieldName) {
451
+ if (duMemberType) {
452
+ // Member-specific field: only check if the member type matches
453
+ accessor = `item.${duParentFieldName}?.type === '${duMemberType}' ? item.${duParentFieldName}?.${field.name} : undefined`;
454
+ }
455
+ else {
456
+ // Common field in DU
457
+ accessor = `item.${duParentFieldName}?.${field.name}`;
458
+ }
459
+ }
460
+ else if (field.kind === 'discriminatedUnion') {
461
+ // DU field at top level: filter by the discriminant (type) value
462
+ accessor = `item.${field.name}?.type`;
463
+ }
464
+ else {
465
+ accessor = `item.${field.name}`;
466
+ }
467
+ return `
468
+ if (!${matchMethod}(${accessor}, filters.${(0, model_type_generator_1.getFilterFieldName)(field.name, duParentFieldName)})) {
469
+ return false
470
+ }`;
471
+ }
196
472
  //# sourceMappingURL=model-view-service.generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-view-service.generator.js","sourceRoot":"","sources":["../../src/backend-view/model-view-service.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-view-service.generator.js","sourceRoot":"","sources":["../../src/backend-view/model-view-service.generator.ts"],"names":[],"mappings":"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"}