@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 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 property = getEntityProperty(server, model, (property) => {
2266
- const field = filter.field;
2267
- return property.code === field || property.columnName === field || property.targetIdColumnName === field;
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: property.columnName || property.code,
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ruiapp/rapid-core",
3
- "version": "0.1.44",
3
+ "version": "0.1.46",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -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 property: RpdDataModelProperty = getEntityProperty(server, model, (property) => {
363
- const field = (filter as EntityNonRelationPropertyFilterOptions).field;
364
- return property.code === field || property.columnName === field || property.targetIdColumnName === field;
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: property.columnName || property.code,
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,