Skip to content

Commit e5e73b0

Browse files
committed
fix: handle virtual columns in filter validation
1 parent 59354f5 commit e5e73b0

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

adminforth/dataConnectors/baseConnector.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,11 @@ export default class AdminForthBaseConnector implements IAdminForthDataSourceCon
167167
}
168168
const fieldObj = resource.dataSourceColumns.find((col) => col.name == normalizedFilter.field);
169169
if (!fieldObj) {
170+
const resourceColumn = resource.columns.find((col) => col.name == normalizedFilter.field);
171+
if (resourceColumn?.virtual) {
172+
return { ok: true, error: '', normalizedFilters: normalizedFilter };
173+
}
174+
170175
const similar = suggestIfTypo(resource.dataSourceColumns.map((col) => col.name), normalizedFilter.field);
171176

172177
let isPolymorphicTarget = false;
@@ -191,6 +196,11 @@ export default class AdminForthBaseConnector implements IAdminForthDataSourceCon
191196
// ensure rightField exists in resource
192197
const rightFieldObj = resource.dataSourceColumns.find((col) => col.name == normalizedFilter.rightField);
193198
if (!rightFieldObj) {
199+
const rightResourceColumn = resource.columns.find((col) => col.name == normalizedFilter.rightField);
200+
if (rightResourceColumn?.virtual) {
201+
return { ok: true, error: '', normalizedFilters: normalizedFilter };
202+
}
203+
194204
const similar = suggestIfTypo(resource.dataSourceColumns.map((col) => col.name), normalizedFilter.rightField as string);
195205
throw new Error(`Field '${normalizedFilter.rightField}' not found in resource '${resource.resourceId}'. ${similar ? `Did you mean '${similar}'?` : ''}`);
196206
}
@@ -665,4 +675,4 @@ export default class AdminForthBaseConnector implements IAdminForthDataSourceCon
665675
}
666676

667677

668-
}
678+
}

0 commit comments

Comments
 (0)