Browse Source

Merge pull request #6090 from nocodb/refactor/dataloader-error

Avoid dataloader error and throw proper error and update scripts in package.json
pull/6092/head
mertmit 1 year ago committed by GitHub
parent
commit
0132c23630
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      packages/nocodb/package.json
  2. 107
      packages/nocodb/src/db/BaseModelSqlv2.ts

8
packages/nocodb/package.json

@ -17,14 +17,12 @@
},
"license": "AGPL-3.0-or-later",
"scripts": {
"build": "nest build",
"build": "npm run docker:build",
"build:obfuscate": "EE=true webpack --config webpack.config.js",
"obfuscate:build:publish": "npm run build:obfuscate && npm publish .",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "nest start",
"start:dev": "nest start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "node dist/main",
"start": "npm run watch:run",
"start:prod": "node docker/main",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "jest",
"test:watch": "jest --watch",

107
packages/nocodb/src/db/BaseModelSqlv2.ts

@ -1390,30 +1390,25 @@ class BaseModelSqlv2 {
if (colOptions?.type === 'hm') {
const listLoader = new DataLoader(async (ids: string[]) => {
try {
if (ids.length > 1) {
const data = await this.multipleHmList(
if (ids.length > 1) {
const data = await this.multipleHmList(
{
colId: column.id,
ids,
},
(listLoader as any).args,
);
return ids.map((id: string) => (data[id] ? data[id] : []));
} else {
return [
await this.hmList(
{
colId: column.id,
ids,
id: ids[0],
},
(listLoader as any).args,
);
return ids.map((id: string) => (data[id] ? data[id] : []));
} else {
return [
await this.hmList(
{
colId: column.id,
id: ids[0],
},
(listLoader as any).args,
),
];
}
} catch (e) {
console.log(e);
return [];
),
];
}
});
const self: BaseModelSqlv2 = this;
@ -1434,31 +1429,26 @@ class BaseModelSqlv2 {
// });
} else if (colOptions.type === 'mm') {
const listLoader = new DataLoader(async (ids: string[]) => {
try {
if (ids?.length > 1) {
const data = await this.multipleMmList(
if (ids?.length > 1) {
const data = await this.multipleMmList(
{
parentIds: ids,
colId: column.id,
},
(listLoader as any).args,
);
return data;
} else {
return [
await this.mmList(
{
parentIds: ids,
parentId: ids[0],
colId: column.id,
},
(listLoader as any).args,
);
return data;
} else {
return [
await this.mmList(
{
parentId: ids[0],
colId: column.id,
},
(listLoader as any).args,
),
];
}
} catch (e) {
console.log(e);
return [];
),
];
}
});
@ -1481,26 +1471,21 @@ class BaseModelSqlv2 {
colId: colOptions.fk_child_column_id,
});
const readLoader = new DataLoader(async (ids: string[]) => {
try {
const data = await (
await Model.getBaseModelSQL({
id: pCol.fk_model_id,
dbDriver: this.dbDriver,
})
).list(
{
// limit: ids.length,
where: `(${pCol.column_name},in,${ids.join(',')})`,
fieldsSet: (readLoader as any).args?.fieldsSet,
},
true,
);
const gs = groupBy(data, pCol.title);
return ids.map(async (id: string) => gs?.[id]?.[0]);
} catch (e) {
console.log(e);
return [];
}
const data = await (
await Model.getBaseModelSQL({
id: pCol.fk_model_id,
dbDriver: this.dbDriver,
})
).list(
{
// limit: ids.length,
where: `(${pCol.column_name},in,${ids.join(',')})`,
fieldsSet: (readLoader as any).args?.fieldsSet,
},
true,
);
const gs = groupBy(data, pCol.title);
return ids.map(async (id: string) => gs?.[id]?.[0]);
});
// defining HasMany count method within GQL Type class

Loading…
Cancel
Save