forcedotcom / forcedotcom/go-soql
Add support for groupBy clause
- Dominant language
- Go
- Stars
- 53
- Forks
- 12
- PR merge metrics
- No merged PRs in 30d
Description
Library should support `GROUP BY` clause. User should be able to annotate `[]string` member of struct with `groupBy` tag. The values in the `[]string` should be the names of the field of the struct that is tagged as `selectClause`. This will enable developers to take `[]string` as parameter to their method where the users of their library can specify the name of the fields of the struct that is being returned to them on which they desire grouping. Below given is example of how this should work:
```
type TestSoqlStruct struct {
SelectClause NonNestedStruct `soql:"selectClause,tableName=SM_SomeObject__c"`
WhereClause TestQueryCriteria `soql:"whereClause"`
GroupBy []string `soql:"groupByClause"`
}
type TestQueryCriteria struct {
IncludeNamePattern []string `soql:"likeOperator,fieldName=Name__c"`
Roles []string `soql:"inOperator,fieldName=Role__c"`
}
type NonNestedStruct struct {
Name string `soql:"selectColumn,fieldName=Name__c"`
SomeValue string `soql:"selectColumn,fieldName=SomeValue__c"`
}
```
To use above structs to create SOQL query
```
soqlStruct := TestSoqlStruct{
WhereClause: TestQueryCriteria {
IncludeNamePattern: []string{"foo", "bar"},
Roles: []string{"admin", "user"},
},
GroupBy: []string{"SomeValue"},
}
soqlQuery, err := Marshal(soqlStruct)
if err != nil {
fmt.Printf("Error in marshaling: %s\n", err.Error())
}
fmt.Println(soqlQuery)
```
Above struct will result in following SOQL query:
```
SELECT Name,SomeValue__c FROM SM_SomeObject__C WHERE (Name__c LIKE '%foo%' OR Name__c LIKE '%bar%') AND Role__c IN ('admin','user') GROUP BY SomeValue___c
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.