forcedotcom / forcedotcom/go-soql
Add support for avg/sum functions
- Dominant language
- Go
- Stars
- 53
- Forks
- 12
- PR merge metrics
- No merged PRs in 30d
Description
As part of supporting aggregate functions add support for following functions:
```
AVG()
SUM()
```
Add `avg` and `sum` tag that can be used in `selectClause` structs as follows:
```
type TestSoqlStruct struct {
SelectClause NestedStruct `soql:"selectClause,tableName= Opportunity"`
GroupBy []string `soql:"groupByClause"`
}
type NestedStruct struct {
CampaignId string `soql:"selectColumn,fieldName= CampaignId"`
Average int `soql:"avg,fieldName= Amount"`
}
soqlStruct := TestSoqlStruct{
GroupBy: []string{"CampaignId"},
}
soqlQuery, err := Marshal(soqlStruct)
if err != nil {
fmt.Printf("Error in marshaling: %s\n", err.Error())
}
fmt.Println(soqlQuery)
```
This should result in SOQL as follows
```
SELECT CampaignId, AVG(Amount) FROM Opportunity GROUP BY CampaignId
```
Note that if `fieldName` is not specified then return `ErrInvalidTag`.
Same should apply for `sum` tag as well.
Allow `avg` and `sum` to be used only for supported primitive [data types](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_agg_functions_field_types.htm)
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.