adminforth 1.0.42 → 1.0.44

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.
@@ -138,7 +138,7 @@ class SQLiteConnector {
138
138
 
139
139
 
140
140
  getData({ resource, limit, offset, sort, filters }) {
141
- console.log('getData', { resource, limit, offset, sort, filters });
141
+ console.log('SQLITE getData', { resource, limit, offset, sort, filters });
142
142
  const columns = resource.dataSourceColumns.map((col) => col.name).join(', ');
143
143
  const tableName = resource.table;
144
144
 
@@ -148,7 +148,7 @@ class SQLiteConnector {
148
148
  return value;
149
149
  }
150
150
  getData({ resource, limit, offset, sort, filters }) {
151
- console.log('getData', { resource, limit, offset, sort, filters });
151
+ console.log('SQLITE getData', { resource, limit, offset, sort, filters });
152
152
  const columns = resource.dataSourceColumns.map((col) => col.name).join(', ');
153
153
  const tableName = resource.table;
154
154
  const where = filters.length ? `WHERE ${filters.map((f, i) => {
package/dist/index.js CHANGED
@@ -472,7 +472,7 @@ class AdminForth {
472
472
  }
473
473
  const { limit, offset, filters, sort } = body;
474
474
  for (const filter of (filters || [])) {
475
- if (AdminForthFilterOperators[filter.operator] === undefined) {
475
+ if (!Object.values(AdminForthFilterOperators).includes(filter.operator)) {
476
476
  throw new Error(`Operator '${filter.operator}' is not allowed`);
477
477
  }
478
478
  if (!resource.columns.some((col) => col.name === filter.field)) {
@@ -500,6 +500,10 @@ class AdminForth {
500
500
  const targetResource = this.config.resources.find((res) => res.resourceId == col.foreignResource.resourceId);
501
501
  const targetConnector = this.connectors[targetResource.dataSource];
502
502
  const targetResourcePkField = targetResource.columns.find((col) => col.primaryKey).name;
503
+ const pksUnique = [...new Set(data.data.map((item) => item[col.name]))];
504
+ if (pksUnique.length === 0) {
505
+ return;
506
+ }
503
507
  const targetData = yield targetConnector.getData({
504
508
  resource: targetResource,
505
509
  limit: limit,
@@ -508,7 +512,7 @@ class AdminForth {
508
512
  {
509
513
  field: targetResourcePkField,
510
514
  operator: AdminForthFilterOperators.IN,
511
- value: data.data.map((item) => item[col.name]),
515
+ value: pksUnique,
512
516
  }
513
517
  ],
514
518
  sort: [],
package/index.ts CHANGED
@@ -537,7 +537,7 @@ class AdminForth {
537
537
  const { limit, offset, filters, sort } = body;
538
538
 
539
539
  for (const filter of (filters || [])) {
540
- if (AdminForthFilterOperators[filter.operator] === undefined) {
540
+ if (!Object.values(AdminForthFilterOperators).includes(filter.operator)) {
541
541
  throw new Error(`Operator '${filter.operator}' is not allowed`);
542
542
  }
543
543
 
@@ -570,6 +570,10 @@ class AdminForth {
570
570
  const targetResource = this.config.resources.find((res) => res.resourceId == col.foreignResource.resourceId);
571
571
  const targetConnector = this.connectors[targetResource.dataSource];
572
572
  const targetResourcePkField = targetResource.columns.find((col) => col.primaryKey).name;
573
+ const pksUnique = [...new Set(data.data.map((item) => item[col.name]))];
574
+ if (pksUnique.length === 0) {
575
+ return;
576
+ }
573
577
  const targetData = await targetConnector.getData({
574
578
  resource: targetResource,
575
579
  limit: limit,
@@ -578,7 +582,7 @@ class AdminForth {
578
582
  {
579
583
  field: targetResourcePkField,
580
584
  operator: AdminForthFilterOperators.IN,
581
- value: data.data.map((item) => item[col.name]),
585
+ value: pksUnique,
582
586
  }
583
587
  ],
584
588
  sort: [],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adminforth",
3
- "version": "1.0.42",
3
+ "version": "1.0.44",
4
4
  "description": "OpenSource Vue3 powered forth-generation admin panel",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",