Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support min/max functions #21

Open
atulkc opened this issue Aug 18, 2020 · 0 comments
Open

Add support min/max functions #21

atulkc opened this issue Aug 18, 2020 · 0 comments
Labels
aggregate-functions help wanted Extra attention is needed

Comments

@atulkc
Copy link
Collaborator

atulkc commented Aug 18, 2020

As part of supporting aggregate functions add support for following functions:

MIN()
MAX()

Add min and max tag that can be used in selectClause structs as follows:

type TestSoqlStruct struct {
	SelectClause NestedStruct      `soql:"selectClause,tableName= Contact"`
	GroupBy        []string                 `soql:"groupByClause"`
}

type NestedStruct struct {
        FirstName     string `soql:"selectColumn,fieldName=FirstName"`
        LastName     string `soql:"selectColumn,fieldName=LastName"`
	Count            int `soql:"min,fieldName= CreatedDate"`
}

soqlStruct := TestSoqlStruct{
   GroupBy: []string{"FirstName", "LastName"},
}
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 FirstName, LastName, MIN(CreatedDate) FROM Contact GROUP BY FirstName, LastName'

Note that if fieldName is not specified then return ErrInvalidTag.

Same should apply for max tag as well.

Allow min and max to be used only for supported primitive data types

@atulkc atulkc added the help wanted Extra attention is needed label Mar 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
aggregate-functions help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant