added support for specifying `@collection.*` aliases
This commit is contained in:
parent
d3713a9d7c
commit
6416328c3b
|
@ -48,6 +48,8 @@
|
||||||
|
|
||||||
- Added support for comments in the API rules and filter expressions.
|
- Added support for comments in the API rules and filter expressions.
|
||||||
|
|
||||||
|
- Added support for specifying a collection alias in `@collection.someCollection:alias.*`.
|
||||||
|
|
||||||
|
|
||||||
## v0.20.0-rc3
|
## v0.20.0-rc3
|
||||||
|
|
||||||
|
|
|
@ -141,13 +141,21 @@ func (r *runner) processCollectionField() (*search.ResolverResult, error) {
|
||||||
return nil, fmt.Errorf("invalid @collection field path in %q", r.fieldName)
|
return nil, fmt.Errorf("invalid @collection field path in %q", r.fieldName)
|
||||||
}
|
}
|
||||||
|
|
||||||
collection, err := r.resolver.loadCollection(r.activeProps[1])
|
// nameOrId or nameOrId:alias
|
||||||
|
collectionParts := strings.SplitN(r.activeProps[1], ":", 2)
|
||||||
|
|
||||||
|
collection, err := r.resolver.loadCollection(collectionParts[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to load collection %q from field path %q", r.activeProps[1], r.fieldName)
|
return nil, fmt.Errorf("failed to load collection %q from field path %q", r.activeProps[1], r.fieldName)
|
||||||
}
|
}
|
||||||
|
|
||||||
r.activeCollectionName = collection.Name
|
r.activeCollectionName = collection.Name
|
||||||
|
|
||||||
|
if len(collectionParts) == 2 && collectionParts[1] != "" {
|
||||||
|
r.activeTableAlias = inflector.Columnify("__collection_alias_" + collectionParts[1])
|
||||||
|
} else {
|
||||||
r.activeTableAlias = inflector.Columnify("__collection_" + r.activeCollectionName)
|
r.activeTableAlias = inflector.Columnify("__collection_" + r.activeCollectionName)
|
||||||
|
}
|
||||||
|
|
||||||
r.withMultiMatch = true
|
r.withMultiMatch = true
|
||||||
|
|
||||||
|
|
|
@ -94,7 +94,7 @@ func NewRecordFieldResolver(
|
||||||
`^\@request\.data\.[\w\.\:]*\w+$`,
|
`^\@request\.data\.[\w\.\:]*\w+$`,
|
||||||
`^\@request\.query\.[\w\.\:]*\w+$`,
|
`^\@request\.query\.[\w\.\:]*\w+$`,
|
||||||
`^\@request\.headers\.\w+$`,
|
`^\@request\.headers\.\w+$`,
|
||||||
`^\@collection\.\w+\.[\w\.\:]*\w+$`,
|
`^\@collection\.\w+(\:\w+)?\.[\w\.\:]*\w+$`,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -155,9 +155,9 @@ func TestRecordFieldResolverUpdateQuery(t *testing.T) {
|
||||||
{
|
{
|
||||||
"@collection join (opt/any operators)",
|
"@collection join (opt/any operators)",
|
||||||
"demo4",
|
"demo4",
|
||||||
"@collection.demo1.text ?> true || @collection.demo2.active ?> true || @collection.demo1.file_one ?> true",
|
"@collection.demo1.text ?> true || @collection.demo2.active ?> true || @collection.demo1:demo1_alias.file_one ?> true",
|
||||||
false,
|
false,
|
||||||
"SELECT DISTINCT `demo4`.* FROM `demo4` LEFT JOIN `demo1` `__collection_demo1` LEFT JOIN `demo2` `__collection_demo2` WHERE ([[__collection_demo1.text]] > 1 OR [[__collection_demo2.active]] > 1 OR [[__collection_demo1.file_one]] > 1)",
|
"SELECT DISTINCT `demo4`.* FROM `demo4` LEFT JOIN `demo1` `__collection_demo1` LEFT JOIN `demo2` `__collection_demo2` LEFT JOIN `demo1` `__collection_alias_demo1_alias` WHERE ([[__collection_demo1.text]] > 1 OR [[__collection_demo2.active]] > 1 OR [[__collection_alias_demo1_alias.file_one]] > 1)",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"@collection join (multi-match operators)",
|
"@collection join (multi-match operators)",
|
||||||
|
@ -391,8 +391,10 @@ func TestRecordFieldResolverResolveSchemaFields(t *testing.T) {
|
||||||
{"@collection.unknown", true, ""},
|
{"@collection.unknown", true, ""},
|
||||||
{"@collection.demo2", true, ""},
|
{"@collection.demo2", true, ""},
|
||||||
{"@collection.demo2.", true, ""},
|
{"@collection.demo2.", true, ""},
|
||||||
|
{"@collection.demo2:someAlias", true, ""},
|
||||||
|
{"@collection.demo2:someAlias.", true, ""},
|
||||||
{"@collection.demo2.title", false, "[[__collection_demo2.title]]"},
|
{"@collection.demo2.title", false, "[[__collection_demo2.title]]"},
|
||||||
{"@collection.demo4.title", false, "[[__collection_demo4.title]]"},
|
{"@collection.demo2:someAlias.title", false, "[[__collection_alias_someAlias.title]]"},
|
||||||
{"@collection.demo4.id", false, "[[__collection_demo4.id]]"},
|
{"@collection.demo4.id", false, "[[__collection_demo4.id]]"},
|
||||||
{"@collection.demo4.created", false, "[[__collection_demo4.created]]"},
|
{"@collection.demo4.created", false, "[[__collection_demo4.created]]"},
|
||||||
{"@collection.demo4.updated", false, "[[__collection_demo4.updated]]"},
|
{"@collection.demo4.updated", false, "[[__collection_demo4.updated]]"},
|
||||||
|
|
Loading…
Reference in New Issue