@ruiapp/rapid-core 0.1.44 → 0.1.46
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/dist/index.js +43 -5
- package/package.json +1 -1
- package/src/dataAccess/entityManager.ts +46 -5
package/dist/index.js
CHANGED
|
@@ -1960,6 +1960,9 @@ function convertEntityOrderByToRowOrderBy(server, model, baseModel, orderByList)
|
|
|
1960
1960
|
if (!property) {
|
|
1961
1961
|
property = getEntityProperty(server, model, (item) => item.relation === "one" && item.targetIdColumnName === orderBy.field);
|
|
1962
1962
|
}
|
|
1963
|
+
if (!property) {
|
|
1964
|
+
property = getEntityProperty(server, model, (item) => item.columnName === orderBy.field);
|
|
1965
|
+
}
|
|
1963
1966
|
if (!property) {
|
|
1964
1967
|
throw new Error(`Unkown orderBy field '${orderBy.field}'`);
|
|
1965
1968
|
}
|
|
@@ -2025,6 +2028,18 @@ async function findEntities(server, dataAccessor, options) {
|
|
|
2025
2028
|
}
|
|
2026
2029
|
}
|
|
2027
2030
|
});
|
|
2031
|
+
// if `keepNonPropertyFields` is true and `properties` are not specified, then select relation columns automatically.
|
|
2032
|
+
if (options.keepNonPropertyFields && (!options.properties || !options.properties.length)) {
|
|
2033
|
+
const oneRelationPropertiesWithNoLinkTable = getEntityPropertiesIncludingBase(server, model).filter(property => property.relation === "one" && !property.linkTableName);
|
|
2034
|
+
oneRelationPropertiesWithNoLinkTable.forEach((property) => {
|
|
2035
|
+
if (property.targetIdColumnName) {
|
|
2036
|
+
columnsToSelect.push({
|
|
2037
|
+
name: property.targetIdColumnName,
|
|
2038
|
+
tableName: property.isBaseProperty ? baseModel.tableName : model.tableName,
|
|
2039
|
+
});
|
|
2040
|
+
}
|
|
2041
|
+
});
|
|
2042
|
+
}
|
|
2028
2043
|
const rowFilters = await convertEntityFiltersToRowFilters(server, model, baseModel, options.filters);
|
|
2029
2044
|
const findRowOptions = {
|
|
2030
2045
|
filters: rowFilters,
|
|
@@ -2262,16 +2277,39 @@ async function convertEntityFiltersToRowFilters(server, model, baseModel, filter
|
|
|
2262
2277
|
}
|
|
2263
2278
|
}
|
|
2264
2279
|
else {
|
|
2265
|
-
const
|
|
2266
|
-
|
|
2267
|
-
return property.code ===
|
|
2280
|
+
const filterField = filter.field;
|
|
2281
|
+
let property = getEntityProperty(server, model, (property) => {
|
|
2282
|
+
return property.code === filterField;
|
|
2268
2283
|
});
|
|
2284
|
+
let columnName = "";
|
|
2285
|
+
if (property) {
|
|
2286
|
+
columnName = property.columnName || property.code;
|
|
2287
|
+
}
|
|
2288
|
+
else {
|
|
2289
|
+
property = getEntityProperty(server, model, (property) => {
|
|
2290
|
+
return property.columnName === filterField;
|
|
2291
|
+
});
|
|
2292
|
+
if (property) {
|
|
2293
|
+
columnName = property.columnName;
|
|
2294
|
+
}
|
|
2295
|
+
else {
|
|
2296
|
+
property = getEntityProperty(server, model, (property) => {
|
|
2297
|
+
return property.targetIdColumnName === filterField;
|
|
2298
|
+
});
|
|
2299
|
+
if (property) {
|
|
2300
|
+
columnName = property.targetIdColumnName;
|
|
2301
|
+
}
|
|
2302
|
+
else {
|
|
2303
|
+
columnName = filterField;
|
|
2304
|
+
}
|
|
2305
|
+
}
|
|
2306
|
+
}
|
|
2269
2307
|
// TODO: do not use `any` here
|
|
2270
2308
|
replacedFilters.push({
|
|
2271
2309
|
operator: filter.operator,
|
|
2272
2310
|
field: {
|
|
2273
|
-
name:
|
|
2274
|
-
tableName: property.isBaseProperty ? baseModel.tableName : model.tableName,
|
|
2311
|
+
name: columnName,
|
|
2312
|
+
tableName: (property && property.isBaseProperty) ? baseModel.tableName : model.tableName,
|
|
2275
2313
|
},
|
|
2276
2314
|
value: filter.value,
|
|
2277
2315
|
itemType: filter.itemType,
|
package/package.json
CHANGED
|
@@ -36,6 +36,10 @@ function convertEntityOrderByToRowOrderBy(server: IRpdServer, model: RpdDataMode
|
|
|
36
36
|
property = getEntityProperty(server, model, (item) => item.relation === "one" && item.targetIdColumnName === orderBy.field);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
if (!property) {
|
|
40
|
+
property = getEntityProperty(server, model, (item) => item.columnName === orderBy.field);
|
|
41
|
+
}
|
|
42
|
+
|
|
39
43
|
if (!property) {
|
|
40
44
|
throw new Error(`Unkown orderBy field '${orderBy.field}'`);
|
|
41
45
|
}
|
|
@@ -105,6 +109,19 @@ async function findEntities(server: IRpdServer, dataAccessor: IRpdDataAccessor,
|
|
|
105
109
|
}
|
|
106
110
|
});
|
|
107
111
|
|
|
112
|
+
// if `keepNonPropertyFields` is true and `properties` are not specified, then select relation columns automatically.
|
|
113
|
+
if (options.keepNonPropertyFields && (!options.properties || !options.properties.length)) {
|
|
114
|
+
const oneRelationPropertiesWithNoLinkTable = getEntityPropertiesIncludingBase(server, model).filter(property => property.relation === "one" && !property.linkTableName);
|
|
115
|
+
oneRelationPropertiesWithNoLinkTable.forEach((property) => {
|
|
116
|
+
if (property.targetIdColumnName) {
|
|
117
|
+
columnsToSelect.push({
|
|
118
|
+
name: property.targetIdColumnName,
|
|
119
|
+
tableName: property.isBaseProperty ? baseModel.tableName : model.tableName,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
|
|
108
125
|
const rowFilters = await convertEntityFiltersToRowFilters(server, model, baseModel, options.filters);
|
|
109
126
|
const findRowOptions: FindRowOptions = {
|
|
110
127
|
filters: rowFilters,
|
|
@@ -359,16 +376,40 @@ async function convertEntityFiltersToRowFilters(server: IRpdServer, model: RpdDa
|
|
|
359
376
|
});
|
|
360
377
|
}
|
|
361
378
|
} else {
|
|
362
|
-
const
|
|
363
|
-
|
|
364
|
-
return property.code ===
|
|
379
|
+
const filterField = (filter as EntityNonRelationPropertyFilterOptions).field;
|
|
380
|
+
let property: RpdDataModelProperty = getEntityProperty(server, model, (property) => {
|
|
381
|
+
return property.code === filterField;
|
|
365
382
|
});
|
|
383
|
+
|
|
384
|
+
let columnName = "";
|
|
385
|
+
if (property) {
|
|
386
|
+
columnName = property.columnName || property.code;
|
|
387
|
+
} else {
|
|
388
|
+
property = getEntityProperty(server, model, (property) => {
|
|
389
|
+
return property.columnName === filterField;
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
if (property) {
|
|
393
|
+
columnName = property.columnName;
|
|
394
|
+
} else {
|
|
395
|
+
property = getEntityProperty(server, model, (property) => {
|
|
396
|
+
return property.targetIdColumnName === filterField;
|
|
397
|
+
});
|
|
398
|
+
|
|
399
|
+
if (property) {
|
|
400
|
+
columnName = property.targetIdColumnName;
|
|
401
|
+
} else {
|
|
402
|
+
columnName = filterField;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
|
|
366
407
|
// TODO: do not use `any` here
|
|
367
408
|
replacedFilters.push({
|
|
368
409
|
operator: filter.operator,
|
|
369
410
|
field: {
|
|
370
|
-
name:
|
|
371
|
-
tableName: property.isBaseProperty ? baseModel.tableName : model.tableName,
|
|
411
|
+
name: columnName,
|
|
412
|
+
tableName: (property && property.isBaseProperty) ? baseModel.tableName : model.tableName,
|
|
372
413
|
},
|
|
373
414
|
value: (filter as any).value,
|
|
374
415
|
itemType: (filter as any).itemType,
|