@postxl/generators 1.4.2 → 1.6.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 (42) hide show
  1. package/dist/backend-rest-api/generators/model-controller.generator.js +109 -11
  2. package/dist/backend-rest-api/generators/model-controller.generator.js.map +1 -1
  3. package/dist/backend-rest-api/rest-api.generator.js +4 -0
  4. package/dist/backend-rest-api/rest-api.generator.js.map +1 -1
  5. package/dist/backend-rest-api/template/utils/src/fieldSelection.spec.ts +252 -0
  6. package/dist/backend-rest-api/template/utils/src/fieldSelection.ts +66 -0
  7. package/dist/backend-router-trpc/generators/model-routes.generator.js +27 -2
  8. package/dist/backend-router-trpc/generators/model-routes.generator.js.map +1 -1
  9. package/dist/backend-router-trpc/router-trpc.generator.d.ts +1 -0
  10. package/dist/backend-router-trpc/router-trpc.generator.js +1 -0
  11. package/dist/backend-router-trpc/router-trpc.generator.js.map +1 -1
  12. package/dist/backend-update/model-update-service.generator.js +145 -8
  13. package/dist/backend-update/model-update-service.generator.js.map +1 -1
  14. package/dist/backend-view/model-view-service.generator.js +361 -43
  15. package/dist/backend-view/model-view-service.generator.js.map +1 -1
  16. package/dist/backend-view/template/{filter.utils.test.ts → query.utils.test.ts} +101 -1
  17. package/dist/backend-view/template/query.utils.ts +444 -0
  18. package/dist/frontend-admin/generators/model-admin-page.generator.js +50 -32
  19. package/dist/frontend-admin/generators/model-admin-page.generator.js.map +1 -1
  20. package/dist/frontend-core/template/src/components/admin/column-header-state-icon.tsx +72 -0
  21. package/dist/frontend-core/template/src/components/admin/table-filter.tsx +195 -43
  22. package/dist/frontend-forms/generators/model/forms.generator.js +2 -2
  23. package/dist/frontend-forms/generators/model/forms.generator.js.map +1 -1
  24. package/dist/frontend-forms/generators/model/inputs.generator.js +8 -8
  25. package/dist/frontend-forms/generators/model/inputs.generator.js.map +1 -1
  26. package/dist/frontend-tables/generators/model-table.generator.js +122 -38
  27. package/dist/frontend-tables/generators/model-table.generator.js.map +1 -1
  28. package/dist/frontend-trpc-client/generators/model-hook.generator.js +149 -35
  29. package/dist/frontend-trpc-client/generators/model-hook.generator.js.map +1 -1
  30. package/dist/types/generators/model-type.generator.js +111 -31
  31. package/dist/types/generators/model-type.generator.js.map +1 -1
  32. package/dist/types/template/query.types.ts +151 -0
  33. package/dist/types/types.generator.d.ts +20 -0
  34. package/dist/types/types.generator.js +9 -3
  35. package/dist/types/types.generator.js.map +1 -1
  36. package/package.json +2 -2
  37. package/dist/backend-rest-api/generators/zod-exception-filter.generator.d.ts +0 -1
  38. package/dist/backend-rest-api/generators/zod-exception-filter.generator.js +0 -28
  39. package/dist/backend-rest-api/generators/zod-exception-filter.generator.js.map +0 -1
  40. package/dist/backend-view/template/filter.utils.ts +0 -218
  41. package/dist/frontend-core/template/src/components/admin/table-filter-header-icon.tsx +0 -30
  42. package/dist/types/template/filter.types.ts +0 -70
@@ -7,12 +7,14 @@ function generateModelHook({ model, context }) {
7
7
  const imports = generator_1.ImportGenerator
8
8
  //
9
9
  .from(model.itemHook.location)
10
- .addType(model.types)
10
+ .addType(model.types.viewModel)
11
11
  .addType(model.types.id)
12
12
  .addType(model.types.filter.type)
13
+ .addType(model.types.filter.fieldType)
13
14
  .add(context.trpcClient)
14
15
  .addImports({
15
- [(0, generator_1.toPackageName)('@tanstack/react-query')]: [(0, generator_1.toFunctionName)('useQuery')],
16
+ [(0, generator_1.toPackageName)('@tanstack/react-query')]: [(0, generator_1.toFunctionName)('useQuery'), (0, generator_1.toFunctionName)('useInfiniteQuery')],
17
+ [(0, generator_1.toPackageName)('@types')]: [(0, generator_1.toTypeName)('SortState')],
16
18
  });
17
19
  let itemsCrudHook = { types: '', hooks: '', exports: '' };
18
20
  if (model.update.kind === 'exists') {
@@ -27,19 +29,34 @@ function generateModelHook({ model, context }) {
27
29
  });
28
30
  itemsCrudHook = {
29
31
  types: `
30
- ${itemsHook.update.name}: (data: UpdatePayload) => Promise<${model.types.name}>
31
- ${itemsHook.updateMany.name}: (data: UpdatePayload[]) => Promise<${model.types.name}[]>
32
- ${itemsHook.updateField.name}: (data: UpdateFieldPayload) => Promise<${model.types.name}>
33
- ${itemsHook.create.name}: (data: CreatePayload) => Promise<${model.types.name}>
34
- ${itemsHook.createMany.name}: (data: CreatePayload[]) => Promise<${model.types.name}[]>
32
+ ${itemsHook.update.name}: (data: UpdatePayload) => Promise<${model.types.viewModel.name}>
33
+ ${itemsHook.updateMany.name}: (data: UpdatePayload[]) => Promise<${model.types.viewModel.name}[]>
34
+ ${itemsHook.updateField.name}: (data: UpdateFieldPayload) => Promise<${model.types.viewModel.name}>
35
+ ${itemsHook.create.name}: (data: CreatePayload) => Promise<${model.types.viewModel.name}>
36
+ ${itemsHook.createMany.name}: (data: CreatePayload[]) => Promise<${model.types.viewModel.name}[]>
35
37
  ${itemsHook.delete.name}: (id: ${model.types.id.name}) => Promise<${model.types.id.name}>
36
38
  ${itemsHook.deleteMany.name}: (ids: ${model.types.id.name}[]) => Promise<${model.types.id.name}[]>
37
- ${itemsHook.clone.name}: (data: ClonePayload) => Promise<${model.types.name}>
38
- ${itemsHook.cloneMany.name}: (data: ClonePayload[]) => Promise<${model.types.name}[]>`,
39
+ ${itemsHook.clone.name}: (data: ClonePayload) => Promise<${model.types.viewModel.name}>
40
+ ${itemsHook.cloneMany.name}: (data: ClonePayload[]) => Promise<${model.types.viewModel.name}[]>`,
39
41
  hooks: `
40
- const invalidate = () => {
41
- void queryClient.invalidateQueries({ queryKey: trpc.${trpcRoute.name}.getMap.queryKey() })
42
- void queryClient.invalidateQueries({ queryKey: trpc.${trpcRoute.name}.getFiltered.queryKey() })
42
+ const invalidate = async () => {
43
+ const paginatedPredicate = (query: { queryKey: unknown }) => {
44
+ const key = query.queryKey
45
+ // tRPC query keys are arrays where first element contains the procedure path
46
+ // e.g., [['posts', 'getFilteredPaginated'], { input, type }]
47
+ if (Array.isArray(key) && Array.isArray(key[0])) {
48
+ const path = key[0]
49
+ return path[0] === '${trpcRoute.name}' && path[1] === 'getFilteredPaginated'
50
+ }
51
+ return false
52
+ }
53
+
54
+ await Promise.all([
55
+ queryClient.invalidateQueries({ queryKey: trpc.${trpcRoute.name}.getMap.queryKey() }),
56
+ queryClient.invalidateQueries({ queryKey: trpc.${trpcRoute.name}.getFiltered.queryKey() }),
57
+ // For infinite query, just refetch without resetting - keeps data visible during refetch
58
+ queryClient.refetchQueries({ predicate: paginatedPredicate }),
59
+ ])
43
60
  }
44
61
 
45
62
  const updateMutation = useMutation(trpc.${trpcRoute.name}.update.mutationOptions({ onSuccess: invalidate }))
@@ -68,61 +85,158 @@ function generateModelHook({ model, context }) {
68
85
  import { useMemo } from 'react'
69
86
  ${imports.generate()}
70
87
 
88
+ /**
89
+ * Options for the ${itemsHook.name} hook.
90
+ */
91
+ export type ${itemsHook.type.name}Options = {
92
+ /**
93
+ * When true, uses paginated fetching with infinite scroll support.
94
+ * When false, fetches all filtered data at once (original behavior).
95
+ * @default true
96
+ */
97
+ paginated?: boolean
98
+ /**
99
+ * Number of items per page when using paginated mode.
100
+ * @default 100
101
+ */
102
+ pageSize?: number
103
+ }
104
+
105
+ /**
106
+ * Return type for the ${itemsHook.name} hook.
107
+ */
71
108
  export type ${itemsHook.type.name} = {
72
- ${itemsHook.list.name}: ${model.types.name}[]
73
- ${itemsHook.map.name}: Map<${model.types.id.name}, ${model.types.name}>
74
- ${itemsHook.filteredList.name}: ${model.types.name}[]
75
- ${itemsHook.filteredMap.name}: Map<${model.types.id.name}, ${model.types.name}>
109
+ /** All items (unfiltered) as an array */
110
+ ${itemsHook.list.name}: ${model.types.viewModel.name}[]
111
+ /** All items (unfiltered) as a Map keyed by ID */
112
+ ${itemsHook.map.name}: Map<${model.types.id.name}, ${model.types.viewModel.name}>
113
+ /** Filtered (+ sorted) items as an array. When paginated, contains all loaded pages flattened. */
114
+ ${itemsHook.filteredList.name}: ${model.types.viewModel.name}[]
115
+ /** Filtered (+ sorted) items as a Map keyed by ID */
116
+ ${itemsHook.filteredMap.name}: Map<${model.types.id.name}, ${model.types.viewModel.name}>
117
+ /** Whether the initial data has been loaded */
76
118
  ${itemsHook.isLoaded.name}: boolean
119
+ /**
120
+ * Total count of ALL matching items in the database (not just loaded ones).
121
+ * Useful for displaying "Showing X of Y items".
122
+ * When not paginated, equals filteredList.length.
123
+ */
124
+ total: number
125
+ /**
126
+ * Whether there are more pages available to load.
127
+ * Only relevant when using paginated mode.
128
+ */
129
+ hasNextPage: boolean
130
+ /**
131
+ * Triggers loading the next page of data.
132
+ * Call this when the user scrolls near the end of the list.
133
+ * Only relevant when using paginated mode.
134
+ */
135
+ fetchNextPage: () => Promise<unknown>
136
+ /**
137
+ * Whether the next page is currently being fetched.
138
+ * Use this to show a loading indicator during infinite scroll.
139
+ */
140
+ isFetchingNextPage: boolean
77
141
 
78
142
  ${itemsCrudHook.types}
79
143
  }
80
144
 
81
145
 
82
- export const ${itemHook.name} = (id: ${model.types.id.name} | null): ${model.types.name} | null => {
146
+ export const ${itemHook.name} = (id: ${model.types.id.name} | null): ${model.types.viewModel.name} | null => {
83
147
  const trpc = ${context.trpcClient.name}()
84
-
148
+
85
149
  const { data, isPending } = useQuery(trpc.${trpcRoute.name}.get.queryOptions(id!, { enabled: id !== null })) // NOSONAR
86
150
 
87
- return useMemo((): ${model.types.name} | null => (isPending || !data) ? null : data, [data, isPending])
151
+ return useMemo((): ${model.types.viewModel.name} | null => (isPending || !data) ? null : data, [data, isPending])
88
152
  }
89
153
 
90
- export const ${itemsHook.name} = (filters?: ${model.types.filter.type.name}): ${itemsHook.type.name} => {
154
+ /**
155
+ * Hook for fetching and managing ${model.userFriendlyNamePlural}.
156
+ *
157
+ * @param filters - Optional filters to apply
158
+ * @param sort - Optional sort configuration
159
+ * @param options - Configuration options
160
+ * @param options.paginated - When true (default), uses infinite scroll pagination. When false, fetches all data at once.
161
+ * @param options.pageSize - Items per page when paginated (default: 100)
162
+ */
163
+ export const ${itemsHook.name} = (
164
+ filters?: ${model.types.filter.type.name},
165
+ sort?: SortState<${model.types.filter.fieldType.name}>,
166
+ options: ${itemsHook.type.name}Options = {},
167
+ ): ${itemsHook.type.name} => {
168
+ const { paginated = true, pageSize = 100 } = options
91
169
  const trpc = ${context.trpcClient.name}()
92
- const isFiltered = useMemo(() => filters && Object.keys(filters).length > 0, [filters])
170
+
171
+ // Determine if we need to fetch filtered data (when filters or sort are provided)
172
+ const isFiltered = useMemo(
173
+ () => (filters && Object.keys(filters).length > 0) || sort !== undefined,
174
+ [filters, sort],
175
+ )
93
176
 
94
177
  const mapQuery = useQuery(trpc.${trpcRoute.name}.getMap.queryOptions())
95
- const filteredListQuery = useQuery({
96
- ...trpc.${trpcRoute.name}.getFiltered.queryOptions(filters ?? {}),
97
- enabled: !!isFiltered,
178
+
179
+ // Non-paginated query: fetches all filtered data at once
180
+ const filteredQuery = useQuery({
181
+ ...trpc.${trpcRoute.name}.${model.trpcRoute.getFiltered.name}.queryOptions({ filters: filters ?? {}, sort }),
182
+ enabled: !!isFiltered && !paginated,
183
+ })
184
+
185
+ // Paginated query: fetches data in pages for infinite scroll
186
+ // Each page contains { data: T[], total: number, cursor: number | null }
187
+ // Pages are accumulated and flattened into a single list
188
+ // Note: cursor is at top level for tRPC infinite query support - tRPC adds cursor automatically
189
+ const infiniteQuery = useInfiniteQuery({
190
+ ...trpc.${trpcRoute.name}.${model.trpcRoute.getFilteredPaginated.name}.infiniteQueryOptions(
191
+ { filters: filters ?? {}, sort, limit: pageSize },
192
+ { getNextPageParam: (lastPage) => lastPage.cursor }
193
+ ),
194
+ initialPageParam: 1,
195
+ enabled: !!isFiltered && paginated,
98
196
  })
99
197
 
100
198
  ${itemsCrudHook.hooks}
101
199
 
102
- const ${itemsHook.map.name} = useMemo((): Map<${model.types.id.name}, ${model.types.name}> => (mapQuery.isPending || !mapQuery.data) ? new Map() : mapQuery.data, [mapQuery.data, mapQuery.isPending])
200
+ const ${itemsHook.map.name} = useMemo((): Map<${model.types.id.name}, ${model.types.viewModel.name}> => (mapQuery.isPending || !mapQuery.data) ? new Map() : mapQuery.data, [mapQuery.data, mapQuery.isPending])
103
201
 
104
- const ${itemsHook.list.name} = useMemo((): ${model.types.name}[] => Array.from(${itemsHook.map.name}.values()), [${itemsHook.map.name}])
202
+ const ${itemsHook.list.name} = useMemo((): ${model.types.viewModel.name}[] => Array.from(${itemsHook.map.name}.values()), [${itemsHook.map.name}])
105
203
 
106
- const ${itemsHook.filteredList.name} = useMemo((): ${model.types.name}[] => {
107
- if (isFiltered) {
108
- return filteredListQuery.data ?? []
204
+ // Build filtered list based on mode:
205
+ // - Not filtered: return full list
206
+ // - Paginated: flatten all loaded pages into single array
207
+ // - Non-paginated: return the single query result
208
+ const ${itemsHook.filteredList.name} = useMemo((): ${model.types.viewModel.name}[] => {
209
+ if (!isFiltered) {
210
+ return ${itemsHook.list.name}
109
211
  }
110
- return ${itemsHook.list.name}
111
- }, [isFiltered, filteredListQuery.data, ${itemsHook.list.name}])
212
+ if (paginated) {
213
+ return infiniteQuery.data?.pages.flatMap(page => page.data) ?? []
214
+ }
215
+ return filteredQuery.data ?? []
216
+ }, [isFiltered, paginated, infiniteQuery.data, filteredQuery.data, ${itemsHook.list.name}])
112
217
 
113
- const ${itemsHook.filteredMap.name} = useMemo((): Map<${model.types.id.name}, ${model.types.name}> => {
114
- if (isFiltered) {
115
- return new Map(${itemsHook.filteredList.name}.map((i) => [i.${model.idField.name}, i]))
218
+ const ${itemsHook.filteredMap.name} = useMemo((): Map<${model.types.id.name}, ${model.types.viewModel.name}> => {
219
+ if (!isFiltered) {
220
+ return ${itemsHook.map.name}
116
221
  }
117
- return ${itemsHook.map.name}
222
+ return new Map(${itemsHook.filteredList.name}.map((i) => [i.${model.idField.name}, i]))
118
223
  }, [isFiltered, ${itemsHook.filteredList.name}, ${itemsHook.map.name}])
119
224
 
225
+ // Total count: from paginated response, or just the list length
226
+ const total = paginated
227
+ ? (infiniteQuery.data?.pages[0]?.total ?? ${itemsHook.list.name}.length)
228
+ : ${itemsHook.filteredList.name}.length
229
+
120
230
  return {
121
231
  ${itemsHook.list.name},
122
232
  ${itemsHook.map.name},
123
233
  ${itemsHook.filteredList.name},
124
234
  ${itemsHook.filteredMap.name},
125
235
  ${itemsHook.isLoaded.name}: !mapQuery.isPending && !mapQuery.isError,
236
+ total,
237
+ hasNextPage: paginated ? (infiniteQuery.hasNextPage ?? false) : false,
238
+ fetchNextPage: paginated ? infiniteQuery.fetchNextPage : () => Promise.resolve(),
239
+ isFetchingNextPage: paginated ? infiniteQuery.isFetchingNextPage : false,
126
240
 
127
241
  ${itemsCrudHook.exports}
128
242
  }
@@ -1 +1 @@
1
- {"version":3,"file":"model-hook.generator.js","sourceRoot":"","sources":["../../../src/frontend-trpc-client/generators/model-hook.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-hook.generator.js","sourceRoot":"","sources":["../../../src/frontend-trpc-client/generators/model-hook.generator.ts"],"names":[],"mappings":"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"}
@@ -62,6 +62,20 @@ export type ${types.name} = {
62
62
  ${fieldDefinitions}
63
63
  }
64
64
 
65
+ /**
66
+ * View model type for ${model.userFriendlyName}.
67
+ *
68
+ * Currently an alias to the base model type. This allows view services
69
+ * to return consistent types that can be extended with computed fields
70
+ * in the future without breaking changes.
71
+ *
72
+ * To extend this type with computed fields, eject this file and modify:
73
+ * export type ${types.viewModel.name} = ${types.name} & {
74
+ * // Add computed fields here
75
+ * }
76
+ */
77
+ export type ${types.viewModel.name} = ${types.name}
78
+
65
79
  ${generateBrandedIdType(model)}
66
80
 
67
81
  /**
@@ -124,41 +138,83 @@ function generateFilterTypes(model, imports, context) {
124
138
  return '';
125
139
  }
126
140
  const filterImports = [Generator.toTypeName('FilterConfig')];
141
+ // Only import Zod schemas - TypeScript types are derived via z.infer<>
127
142
  if (filterFields.some((f) => f.type === 'NumberFilter')) {
128
- filterImports.push(Generator.toTypeName('NumberFilter'), Generator.toFunctionName('zNumberFilter'));
143
+ filterImports.push(Generator.toFunctionName('zNumberFilter'));
129
144
  }
130
145
  if (filterFields.some((f) => f.type === 'DateFilter')) {
131
- filterImports.push(Generator.toTypeName('DateFilter'), Generator.toFunctionName('zDateFilter'));
146
+ filterImports.push(Generator.toFunctionName('zDateFilter'));
132
147
  }
148
+ if (filterFields.some((f) => f.type === 'StringFilter' || f.type.startsWith('StringFilter<'))) {
149
+ filterImports.push(Generator.toFunctionName('zStringFilter'));
150
+ }
151
+ filterImports.push(
152
+ // Add zGlobalSearch for global search support (type is derived from Zod)
153
+ Generator.toFunctionName('zGlobalSearch'),
154
+ // Add zSortDirection for sort decoder
155
+ Generator.toFunctionName('zSortDirection'));
133
156
  imports.addImport({
134
157
  items: filterImports,
135
- from: Generator.toFilePath('./filter.types'),
158
+ from: Generator.toFilePath('./query.types'),
136
159
  });
160
+ const baseFilterName = `${filterName}Base`;
161
+ const baseFilterDecoderName = `z${model._conjugated.PascalCase}FilterBase`;
137
162
  return `
138
- export type ${filterName} = {
139
- ${filterFields.map((f) => `${(0, exports.getFilterFieldName)(f.name, f.duParentFieldName)}?: ${f.type}`).join('\n ')}
140
- }
141
-
142
163
  export const ${filterFieldName} = [
143
164
  ${filterFields.map((f) => `'${(0, exports.getFilterFieldName)(f.name, f.duParentFieldName)}'`).join(',\n ')}
144
165
  ] as const
145
166
 
146
167
  export type ${filterFieldName} = (typeof ${filterFieldName})[number]
147
168
 
148
- export const ${filterConfigName}: FilterConfig<${filterFieldName}, ${filterName}> = {
169
+ /**
170
+ * Zod decoder for base filter (without globalSearch).
171
+ */
172
+ export const ${baseFilterDecoderName} = z.object({
173
+ ${filterFields.map((f) => `${(0, exports.getFilterFieldName)(f.name, f.duParentFieldName)}: ${f.decoder}`).join(',\n ')}
174
+ })
175
+
176
+ /**
177
+ * Base filter type for ${model.name} (without globalSearch).
178
+ * Derived from Zod decoder to ensure type safety.
179
+ */
180
+ export type ${baseFilterName} = z.infer<typeof ${baseFilterDecoderName}>
181
+
182
+ /**
183
+ * Zod decoder for filter with global search support.
184
+ */
185
+ export const ${filterDecoderName} = ${baseFilterDecoderName}.extend(zGlobalSearch.shape)
186
+
187
+ /**
188
+ * Filter type for ${model.name} with global search support.
189
+ * Derived from Zod decoder to ensure type safety.
190
+ */
191
+ export type ${filterName} = z.infer<typeof ${filterDecoderName}>
192
+
193
+ export const ${filterConfigName}: FilterConfig<${filterFieldName}, ${baseFilterName}> = {
149
194
  ${filterFields
150
- .map((f) => `${(0, exports.getFilterFieldName)(f.name, f.duParentFieldName)}: {
195
+ .map((f) => {
196
+ const getLabelFn = generateGetLabelFunction(f);
197
+ const getLabelLine = getLabelFn ? `\n getLabel: ${getLabelFn},` : '';
198
+ return `${(0, exports.getFilterFieldName)(f.name, f.duParentFieldName)}: {
151
199
  filterKey: '${(0, exports.getFilterFieldName)(f.name, f.duParentFieldName)}',
152
200
  valueType: '${f.valueType}',
153
- kind: '${f.kind}',
154
- ${generateExtraFilterConfigFields(f)}
155
- }`)
201
+ kind: '${f.kind}',${generateExtraFilterConfigFields(f)}${getLabelLine}
202
+ }`;
203
+ })
156
204
  .join(',\n ')}
157
205
  }
158
206
 
159
- export const ${filterDecoderName} = z.object({
160
- ${filterFields.map((f) => `${(0, exports.getFilterFieldName)(f.name, f.duParentFieldName)}: ${f.decoder}`).join(',\n ')}
161
- })
207
+ export const ${model.types.sort.decoder.name} = z.array(
208
+ z.object({
209
+ field: z.enum(${filterFieldName}),
210
+ direction: zSortDirection,
211
+ })
212
+ ).optional()
213
+
214
+ /**
215
+ * Sort type for ${model.name}, derived from Zod decoder.
216
+ */
217
+ export type ${model.types.sort.type.name} = z.infer<typeof ${model.types.sort.decoder.name}>
162
218
  `;
163
219
  }
164
220
  const getFilterFieldName = (name, duParentFieldName) => {
@@ -221,18 +277,17 @@ function getFilterFieldInfo({ field, model, context, imports, }) {
221
277
  const valueType = getFilterValueType(field);
222
278
  if (field.kind === 'id') {
223
279
  const decoder = Generator.toFunctionName(`z${PascalCase}Id`);
224
- const typeName = Generator.toTypeName(`${PascalCase}Id`);
225
280
  return {
226
281
  name: field.name,
227
- type: `${typeName}[]`,
282
+ type: 'StringFilter', // Type is derived from Zod, no generic needed
228
283
  valueType,
229
- decoder: `z.array(z.lazy(() => ${decoder})).optional()`,
284
+ decoder: `zStringFilter.extend({ values: z.array(z.lazy(() => ${decoder})).optional() }).optional()`,
230
285
  kind: 'id',
231
286
  };
232
287
  }
233
288
  else if (field.kind === 'scalar') {
234
- let type = 'string[]';
235
- let decoder = 'z.array(z.string()).optional()';
289
+ let type = 'StringFilter';
290
+ let decoder = 'zStringFilter.optional()';
236
291
  if (field.type === 'number') {
237
292
  type = 'NumberFilter';
238
293
  decoder = 'zNumberFilter.optional()';
@@ -257,13 +312,13 @@ function getFilterFieldInfo({ field, model, context, imports, }) {
257
312
  const referencedModel = context.models.get(field.referencedModelName);
258
313
  if (referencedModel) {
259
314
  const decoder = Generator.toFunctionName(`z${referencedModel._conjugated.PascalCase}Id`);
260
- const typeName = referencedModel.types.id.name;
261
- imports.addImport({ items: [decoder, typeName], from: referencedModel.types._filePath });
315
+ // Only import the decoder - TypeScript types are derived via z.infer<>
316
+ imports.addImport({ items: [decoder], from: referencedModel.types._filePath });
262
317
  return {
263
318
  name: field.name,
264
- type: `${typeName}[]`,
319
+ type: 'StringFilter', // Type is derived from Zod, no generic needed
265
320
  valueType,
266
- decoder: `z.array(z.lazy(() => ${decoder})).optional()`,
321
+ decoder: `zStringFilter.extend({ values: z.array(z.lazy(() => ${decoder})).optional() }).optional()`,
267
322
  kind: 'relation',
268
323
  referencedModelViewServiceVariableName: Generator.toVariableName(referencedModel._conjugated.camelCasePlural),
269
324
  referencedModelLabelField: referencedModel.labelField.name,
@@ -275,12 +330,13 @@ function getFilterFieldInfo({ field, model, context, imports, }) {
275
330
  const referencedEnum = context.enums.get(field.enumName);
276
331
  if (referencedEnum) {
277
332
  const typeName = referencedEnum.types.name;
333
+ // Import enum type for use in z.enum() decoder
278
334
  imports.addImport({ items: [typeName], from: referencedEnum.types._filePath });
279
335
  return {
280
336
  name: field.name,
281
- type: `${typeName}[]`,
337
+ type: 'StringFilter', // Type is derived from Zod, no generic needed
282
338
  valueType,
283
- decoder: `z.array(z.lazy(() => z.nativeEnum(${typeName}))).optional()`,
339
+ decoder: `zStringFilter.extend({ values: z.array(z.lazy(() => z.enum(${typeName}))).optional() }).optional()`,
284
340
  kind: 'enum',
285
341
  enumName: typeName,
286
342
  enumValues: Array.from(referencedEnum.members.values()).map((v) => v.value),
@@ -294,9 +350,9 @@ function getFilterFieldInfo({ field, model, context, imports, }) {
294
350
  }));
295
351
  return {
296
352
  name: field.name,
297
- type: 'string[]',
353
+ type: 'StringFilter',
298
354
  valueType,
299
- decoder: 'z.array(z.string()).optional()',
355
+ decoder: 'zStringFilter.optional()',
300
356
  kind: 'discriminatedUnion',
301
357
  duMemberTypes,
302
358
  };
@@ -306,14 +362,17 @@ function getFilterFieldInfo({ field, model, context, imports, }) {
306
362
  function generateExtraFilterConfigFields(f) {
307
363
  switch (f.kind) {
308
364
  case 'relation':
309
- return `referencedModelViewServiceVariableName: '${f.referencedModelViewServiceVariableName}',
365
+ return `
366
+ referencedModelViewServiceVariableName: '${f.referencedModelViewServiceVariableName}',
310
367
  referencedModelLabelField: '${f.referencedModelLabelField}',
311
368
  referencedModelIdField: '${f.referencedModelIdField}',`;
312
369
  case 'enum':
313
- return `enumName: '${f.enumName}',
370
+ return `
371
+ enumName: '${f.enumName}',
314
372
  enumValues: ${JSON.stringify(f.enumValues)},`;
315
373
  case 'discriminatedUnion':
316
- return `duMemberTypes: ${JSON.stringify(f.duMemberTypes)},`;
374
+ return `
375
+ duMemberTypes: ${JSON.stringify(f.duMemberTypes)},`;
317
376
  case 'scalar':
318
377
  case 'id':
319
378
  return '';
@@ -321,6 +380,27 @@ function generateExtraFilterConfigFields(f) {
321
380
  throw new utils_1.ExhaustiveSwitchCheck(f);
322
381
  }
323
382
  }
383
+ /**
384
+ * Returns the getLabel function for fields that need custom label handling.
385
+ * Returns undefined for fields where String(value) is sufficient (the default).
386
+ */
387
+ function generateGetLabelFunction(f) {
388
+ // For dates, use ISO format (YYYY-MM-DD) for consistent server-side matching
389
+ if (f.valueType === 'date') {
390
+ return '(v: unknown) => {const d = v instanceof Date ? v : new Date(v as string); return Number.isNaN(d.getTime()) ? "" : d.toISOString().split("T")[0]; }';
391
+ }
392
+ // For relation fields, resolve ID to label using referencedItems context
393
+ if (f.kind === 'relation') {
394
+ return `(v: unknown, refs?: Map<string, any>) => {
395
+ if (v == null || typeof v === 'object') return ''
396
+ const ref = refs?.get(String(v))
397
+ return String(ref?.['${f.referencedModelLabelField}'] ?? v)
398
+ }`;
399
+ }
400
+ // For all other fields (strings, numbers, booleans, enums, DUs), String(value) is the default
401
+ // No need to generate getLabel - the consumer will use String(value) as fallback
402
+ return undefined;
403
+ }
324
404
  function getFieldDefinitions({ fields, model, imports, context, }) {
325
405
  const fieldDefinitions = [];
326
406
  for (const field of fields) {
@@ -1 +1 @@
1
- {"version":3,"file":"model-type.generator.js","sourceRoot":"","sources":["../../../src/types/generators/model-type.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-type.generator.js","sourceRoot":"","sources":["../../../src/types/generators/model-type.generator.ts"],"names":[],"mappings":"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"}