@postxl/generator 0.62.6 → 0.63.1

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.
@@ -46,9 +46,12 @@ function generateImportExportTypes({ models, meta }) {
46
46
  `);
47
47
  }
48
48
  if (field.kind === 'scalar' && field.isUnique) {
49
- nonUniqueFieldErrors.push(`
50
- ${types.delta_Model.errors.nonUnique.type}<"${field.name}", ${field.tsTypeName}>
51
- `);
49
+ if (field.isRequired) {
50
+ nonUniqueFieldErrors.push(`${types.delta_Model.errors.nonUnique.type}<"${field.name}", ${field.tsTypeName}>`);
51
+ }
52
+ else {
53
+ nonUniqueFieldErrors.push(`${types.delta_Model.errors.nonUnique.type}<"${field.name}", ${field.tsTypeName} | null>`);
54
+ }
52
55
  }
53
56
  if (field.kind === 'scalar' && field.validation) {
54
57
  invalidTypeFieldErrors.push(`
@@ -21,7 +21,6 @@ import { Headline } from '@components/atoms/Headline'
21
21
  ${imports.generate()}
22
22
 
23
23
  import { Content, Layout } from '@components/shared/Layout'
24
- import { STATIC_TEST_IDS } from '@lib/static_test_ids'
25
24
  import { t } from '@i18n/translation'
26
25
  import { useState } from 'react'
27
26
 
@@ -46,7 +45,7 @@ export default function Admin${meta.internalSingularNameCapitalized}Page() {
46
45
  <Spacer key="Spacer" />
47
46
 
48
47
  <ActionWrapper key="GlobalFilter">
49
- <Button label={t['Create']} icon="plus" fill="fill" __e2e_test_id__={STATIC_TEST_IDS.indexPage.buttons.create} onClick={() => setIsCreateModalOpen(true)}/>
48
+ <Button label={t['Create']} icon="plus" fill="fill" onClick={() => setIsCreateModalOpen(true)}/>
50
49
  </ActionWrapper>
51
50
  </ActionsBarWrapper>
52
51
  </Header>
@@ -1166,11 +1166,13 @@ function generateUniqueFieldsBlocks({ model }) {
1166
1166
  removeCode: [],
1167
1167
  };
1168
1168
  for (const f of fields) {
1169
+ const returnType = `string${f.isRequired ? '' : ' | null'}`;
1169
1170
  result.mapDeclarations.push(`'${f.name}': new Map<string, ${model.typeName}>()`);
1170
1171
  result.getByFunctions.push(`
1171
1172
  // NOTE: The current implementation is synchronous, but it needs to be async to conform to the interface.
1172
1173
  // eslint-disable-next-line @typescript-eslint/require-await
1173
- public async getBy${(0, string_1.toPascalCase)(f.name)}(${f.name}: string): Promise<${model.typeName} | undefined> {
1174
+ public async getBy${(0, string_1.toPascalCase)(f.name)}(${f.name}: ${returnType}): Promise<${model.typeName} | undefined> {
1175
+ ${f.isRequired ? '' : `if (${f.name} === null) { return undefined }`}
1174
1176
  return this.uniqueIds.${f.name}.get(${(0, string_1.toCamelCase)(f.name)})
1175
1177
  }`);
1176
1178
  result.clearCode.push(`this.uniqueIds.${f.name}.clear()`);
@@ -1183,7 +1185,7 @@ function generateUniqueFieldsBlocks({ model }) {
1183
1185
  /**
1184
1186
  * Utility function that ensures that the ${f.name} field is unique
1185
1187
  */
1186
- private ${getEnsureUniqueFnName(f)}(item: { ${f.name}?: string }) {
1188
+ private ${getEnsureUniqueFnName(f)}(item: { ${f.name}?: ${returnType} }) {
1187
1189
  if (!item.${f.name}) {
1188
1190
  return
1189
1191
  }
@@ -1202,8 +1204,14 @@ function generateUniqueFieldsBlocks({ model }) {
1202
1204
  this.logger.log(\`${model.typeName} ${f.name} "\${item.${f.name}}" already exists. Renaming to "\${${f.name}}")\`)
1203
1205
  item.${f.name} = ${f.name}
1204
1206
  }`);
1205
- result.setCode.push(`this.uniqueIds.${f.name}.set(item.${f.name}, item)`);
1206
- result.removeCode.push(`this.uniqueIds.${f.name}.delete(item.${f.name})`);
1207
+ if (f.isRequired) {
1208
+ result.setCode.push(`this.uniqueIds.${f.name}.set(item.${f.name}, item)`);
1209
+ result.removeCode.push(`this.uniqueIds.${f.name}.delete(item.${f.name})`);
1210
+ }
1211
+ else {
1212
+ result.setCode.push(`if (item.${f.name} !== null) { this.uniqueIds.${f.name}.set(item.${f.name}, item) }`);
1213
+ result.removeCode.push(`if (item.${f.name} !== null) { this.uniqueIds.${f.name}.delete(item.${f.name}) }`);
1214
+ }
1207
1215
  }
1208
1216
  if (fields.length > 1) {
1209
1217
  result.verifyFunctionComment = `In case a value of the fields ${fields
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@postxl/generator",
3
- "version": "0.62.6",
3
+ "version": "0.63.1",
4
4
  "main": "./dist/generator.js",
5
5
  "typings": "./dist/generator.d.ts",
6
6
  "bin": {