@odata-effect/odata-effect-generator 0.6.3 → 0.6.5

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.
@@ -121,6 +121,12 @@ const generateIdToKeyFunction = (entityType, version) => {
121
121
  if (entityType.keys.length === 1) {
122
122
  const keyProp = entityType.keys[0];
123
123
  const keyTsType = keyProp.typeMapping.tsType;
124
+ // Check if key is a branded type that needs string conversion
125
+ const isBrandedType = keyTsType.startsWith("BigDecimal.") || keyTsType.startsWith("DateTime.") || keyTsType.startsWith("Duration.");
126
+ if (isBrandedType) {
127
+ // Branded types are converted to string for EntityKey compatibility
128
+ return `(id: ${idTypeName}) => typeof id === "string" ? { ${keyProp.odataName}: id } : { ${keyProp.odataName}: String(id.${keyProp.name}) }`;
129
+ }
124
130
  if (isV4) {
125
131
  // V4 can use number keys directly
126
132
  if (keyTsType === "number") {
@@ -137,8 +143,15 @@ const generateIdToKeyFunction = (entityType, version) => {
137
143
  }
138
144
  }
139
145
  } else {
140
- // Composite key - both V2 and V4 can use native types
141
- const keyMapping = entityType.keys.map(k => `${k.odataName}: id.${k.name}`).join(", ");
146
+ // Composite key - convert branded types (BigDecimal, DateTime, Duration) to string
147
+ const keyMapping = entityType.keys.map(k => {
148
+ const tsType = k.typeMapping.tsType;
149
+ // Branded types need to be converted to string for EntityKey compatibility
150
+ if (tsType.startsWith("BigDecimal.") || tsType.startsWith("DateTime.") || tsType.startsWith("Duration.")) {
151
+ return `${k.odataName}: String(id.${k.name})`;
152
+ }
153
+ return `${k.odataName}: id.${k.name}`;
154
+ }).join(", ");
142
155
  return `(id: ${idTypeName}) => ({ ${keyMapping} })`;
143
156
  }
144
157
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceFnGenerator.js","names":["_NamingHelper","require","generateServiceFns","dataModel","options","esmExtensions","content","generateServicesFile","servicesFile","fileName","exports","lines","isV4","version","crudImportPath","entitySets","entitySet","values","entityType","entityTypes","get","entityTypeFqName","push","serviceName","modelImports","name","keys","length","getIdTypeName","getEditableTypeName","i","isLast","formatRelativeImport","serviceClassName","getServiceClassName","entityName","editableName","hasKeys","generateIdToKeyFunction","join","idTypeName","keyProp","keyTsType","typeMapping","tsType","odataName","keyMapping","map","k"],"sources":["../../../src/generator/ServiceFnGenerator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ServiceFnGenerator.js","names":["_NamingHelper","require","generateServiceFns","dataModel","options","esmExtensions","content","generateServicesFile","servicesFile","fileName","exports","lines","isV4","version","crudImportPath","entitySets","entitySet","values","entityType","entityTypes","get","entityTypeFqName","push","serviceName","modelImports","name","keys","length","getIdTypeName","getEditableTypeName","i","isLast","formatRelativeImport","serviceClassName","getServiceClassName","entityName","editableName","hasKeys","generateIdToKeyFunction","join","idTypeName","keyProp","keyTsType","typeMapping","tsType","isBrandedType","startsWith","odataName","keyMapping","map","k"],"sources":["../../../src/generator/ServiceFnGenerator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -114,6 +114,12 @@ const generateIdToKeyFunction = (entityType, version) => {
114
114
  if (entityType.keys.length === 1) {
115
115
  const keyProp = entityType.keys[0];
116
116
  const keyTsType = keyProp.typeMapping.tsType;
117
+ // Check if key is a branded type that needs string conversion
118
+ const isBrandedType = keyTsType.startsWith("BigDecimal.") || keyTsType.startsWith("DateTime.") || keyTsType.startsWith("Duration.");
119
+ if (isBrandedType) {
120
+ // Branded types are converted to string for EntityKey compatibility
121
+ return `(id: ${idTypeName}) => typeof id === "string" ? { ${keyProp.odataName}: id } : { ${keyProp.odataName}: String(id.${keyProp.name}) }`;
122
+ }
117
123
  if (isV4) {
118
124
  // V4 can use number keys directly
119
125
  if (keyTsType === "number") {
@@ -130,8 +136,15 @@ const generateIdToKeyFunction = (entityType, version) => {
130
136
  }
131
137
  }
132
138
  } else {
133
- // Composite key - both V2 and V4 can use native types
134
- const keyMapping = entityType.keys.map(k => `${k.odataName}: id.${k.name}`).join(", ");
139
+ // Composite key - convert branded types (BigDecimal, DateTime, Duration) to string
140
+ const keyMapping = entityType.keys.map(k => {
141
+ const tsType = k.typeMapping.tsType;
142
+ // Branded types need to be converted to string for EntityKey compatibility
143
+ if (tsType.startsWith("BigDecimal.") || tsType.startsWith("DateTime.") || tsType.startsWith("Duration.")) {
144
+ return `${k.odataName}: String(id.${k.name})`;
145
+ }
146
+ return `${k.odataName}: id.${k.name}`;
147
+ }).join(", ");
135
148
  return `(id: ${idTypeName}) => ({ ${keyMapping} })`;
136
149
  }
137
150
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceFnGenerator.js","names":["formatRelativeImport","getEditableTypeName","getIdTypeName","getServiceClassName","generateServiceFns","dataModel","options","esmExtensions","content","generateServicesFile","servicesFile","fileName","lines","isV4","version","crudImportPath","entitySets","entitySet","values","entityType","entityTypes","get","entityTypeFqName","push","serviceName","modelImports","name","keys","length","i","isLast","serviceClassName","entityName","editableName","hasKeys","generateIdToKeyFunction","join","idTypeName","keyProp","keyTsType","typeMapping","tsType","odataName","keyMapping","map","k"],"sources":["../../../src/generator/ServiceFnGenerator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ServiceFnGenerator.js","names":["formatRelativeImport","getEditableTypeName","getIdTypeName","getServiceClassName","generateServiceFns","dataModel","options","esmExtensions","content","generateServicesFile","servicesFile","fileName","lines","isV4","version","crudImportPath","entitySets","entitySet","values","entityType","entityTypes","get","entityTypeFqName","push","serviceName","modelImports","name","keys","length","i","isLast","serviceClassName","entityName","editableName","hasKeys","generateIdToKeyFunction","join","idTypeName","keyProp","keyTsType","typeMapping","tsType","isBrandedType","startsWith","odataName","keyMapping","map","k"],"sources":["../../../src/generator/ServiceFnGenerator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odata-effect/odata-effect-generator",
3
- "version": "0.6.3",
3
+ "version": "0.6.5",
4
4
  "description": "Effect-based OData service code generator",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -178,6 +178,16 @@ const generateIdToKeyFunction = (
178
178
  const keyProp = entityType.keys[0]
179
179
  const keyTsType = keyProp.typeMapping.tsType
180
180
 
181
+ // Check if key is a branded type that needs string conversion
182
+ const isBrandedType = keyTsType.startsWith("BigDecimal.") ||
183
+ keyTsType.startsWith("DateTime.") ||
184
+ keyTsType.startsWith("Duration.")
185
+
186
+ if (isBrandedType) {
187
+ // Branded types are converted to string for EntityKey compatibility
188
+ return `(id: ${idTypeName}) => typeof id === "string" ? { ${keyProp.odataName}: id } : { ${keyProp.odataName}: String(id.${keyProp.name}) }`
189
+ }
190
+
181
191
  if (isV4) {
182
192
  // V4 can use number keys directly
183
193
  if (keyTsType === "number") {
@@ -194,8 +204,15 @@ const generateIdToKeyFunction = (
194
204
  }
195
205
  }
196
206
  } else {
197
- // Composite key - both V2 and V4 can use native types
198
- const keyMapping = entityType.keys.map((k) => `${k.odataName}: id.${k.name}`).join(", ")
207
+ // Composite key - convert branded types (BigDecimal, DateTime, Duration) to string
208
+ const keyMapping = entityType.keys.map((k) => {
209
+ const tsType = k.typeMapping.tsType
210
+ // Branded types need to be converted to string for EntityKey compatibility
211
+ if (tsType.startsWith("BigDecimal.") || tsType.startsWith("DateTime.") || tsType.startsWith("Duration.")) {
212
+ return `${k.odataName}: String(id.${k.name})`
213
+ }
214
+ return `${k.odataName}: id.${k.name}`
215
+ }).join(", ")
199
216
  return `(id: ${idTypeName}) => ({ ${keyMapping} })`
200
217
  }
201
218
  }