Add workaround for field alias (recordID => ID) in rec. query filter

This commit is contained in:
Denis Arh
2022-08-28 12:41:40 +02:00
parent 258068bdfb
commit 34d4de0e73
+13 -2
View File
@@ -55,7 +55,18 @@ func Model(m *dal.Model, c queryRunner, d drivers.Dialect) *model {
ms.queryParser = ql.Converter(
ql.SymHandler(func(node *ql.ASTNode) (exp.Expression, error) {
attr := ms.model.Attributes.FindByIdent(node.Symbol)
sym := node.Symbol
if ms.model.ResourceType == "corteza::compose:module" {
// temporary solution
//
// before DAL some fields were aliased (recordID => ID)
switch sym {
case "recordID":
sym = "ID"
}
}
attr := ms.model.Attributes.FindByIdent(sym)
if attr == nil {
return nil, fmt.Errorf("unknown attribute %q used in query expression", node.Symbol)
}
@@ -64,7 +75,7 @@ func Model(m *dal.Model, c queryRunner, d drivers.Dialect) *model {
return nil, fmt.Errorf("attribute %q can not be used in query expression", attr.Ident)
}
return ms.table.AttributeExpression(node.Symbol)
return ms.table.AttributeExpression(sym)
}),
ql.RefHandler(d.ExprHandler),
)