@nestledjs/api 0.1.6 → 0.1.7

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestledjs/api",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "generators": "./generators.json",
5
5
  "type": "commonjs",
6
6
  "main": "./src/index.js",
@@ -125,26 +125,17 @@ function generateRelationHandling(model, operation) {
125
125
  // Generate the improved iteration logic
126
126
  code += ' for (const [relationName, config] of Object.entries(relationMappings)) {\n';
127
127
  code += ' if (config.ids !== undefined && config.ids !== null) {\n';
128
-
129
- // Improved logic based on relationship type and operation
130
- code += ' if (config.isVirtual) {\n';
131
- code += ' // Virtual relationships (many-to-many or one-to-many reverse)\n';
132
- code += ' if (config.isList) {\n';
133
- code += ' // Many-to-many or one-to-many from the "many" side - use set for updates\n';
134
- code += ` data[relationName] = { ${operation === 'create' ? 'connect' : 'set'}: Array.isArray(config.ids) ? config.ids.map(id => ({ id })) : [{ id: config.ids }] };\n`;
135
- code += ' } else {\n';
136
- code += ' // Single virtual relationship - use connect\n';
137
- code += ' data[relationName] = { connect: { id: config.ids } };\n';
138
- code += ' }\n';
128
+ code += ' // Virtual list relationships use set for updates, connect for creates\n';
129
+ code += ' // All other relationships always use connect\n';
130
+ code += ' const useSet = config.isVirtual && config.isList && operation === \'update\';\n';
131
+ code += ' const relationOperation = useSet ? \'set\' : \'connect\';\n';
132
+ code += ' const ids = Array.isArray(config.ids) ? config.ids.map(id => ({ id })) : [{ id: config.ids }];\n';
133
+ code += ' \n';
134
+ code += ' if (config.isList || useSet) {\n';
135
+ code += ' data[relationName] = { [relationOperation]: ids };\n';
139
136
  code += ' } else {\n';
140
- code += ' // Foreign key relationships (belongs-to) - always use connect for single values\n';
141
- code += ' if (config.isList) {\n';
142
- code += ' // This case should be rare, but handle arrays if they exist\n';
143
- code += ' data[relationName] = { connect: Array.isArray(config.ids) ? config.ids.map(id => ({ id })) : [{ id: config.ids }] };\n';
144
- code += ' } else {\n';
145
- code += ' // Single foreign key relationship - use connect\n';
146
- code += ' data[relationName] = { connect: { id: config.ids } };\n';
147
- code += ' }\n';
137
+ code += ' // Single relationship - extract the single id\n';
138
+ code += ' data[relationName] = { connect: { id: config.ids } };\n';
148
139
  code += ' }\n';
149
140
  code += ' }\n';
150
141
  code += ' }\n';