Skip to content

Instantly share code, notes, and snippets.

@ericraio
Last active August 4, 2020 01:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ericraio/7cbe28fbed2f8815af6f0b489de80ff4 to your computer and use it in GitHub Desktop.
Save ericraio/7cbe28fbed2f8815af6f0b489de80ff4 to your computer and use it in GitHub Desktop.
package customtargeting
import (
"errors"
"fmt"
"github.com/ezoic/go-dfpapi/generated/customtargetingservice"
l4g "github.com/ezoic/log4go"
)
type CustomTargetingValueModel struct {
Attributes customtargetingservice.CustomTargetingValue `json:"attributes"`
}
func (ct *CustomTargeting) FindAllValuesByKeyName(keyName string) ([]CustomTargetingValueModel, error) {
key, err := ct.FindKeyByName(keyName)
if err != nil {
var empty []CustomTargetingValueModel
l4g.Debug(err)
return empty, err
}
if key == nil {
var empty []CustomTargetingValueModel
return empty, fmt.Errorf(`Unable to find key by name '%s'`, keyName)
}
return ct.FindAllValuesByKey(*key)
}
func (ct *CustomTargeting) FindAllValuesByKey(key CustomTargetingKeyModel) ([]CustomTargetingValueModel, error) {
id := key.Attributes.Id
query := fmt.Sprintf(`WHERE customTargetingKeyId = '%d' AND status = 'ACTIVE'`, id)
return ct.SearchValuesWithStatement(query)
}
func (ct *CustomTargeting) SearchValuesWithStatement(query string) ([]CustomTargetingValueModel, error) {
var results []CustomTargetingValueModel
statement := customtargetingservice.Statement{Query: &query}
getCustomTargetingsByStatement := customtargetingservice.GetCustomTargetingValuesByStatement{FilterStatement: &statement}
response, err := ct.service.GetCustomTargetingValuesByStatement(&getCustomTargetingsByStatement)
if err != nil {
l4g.Debug(err)
return results, err
}
customTargetingValuePage := response.Rval
if customTargetingValuePage == nil {
return results, errors.New("CustomTargetingPage from get line items statement was not given.")
}
res := customTargetingValuePage.Results
for _, result := range res {
if result == nil {
continue
}
ctvp := CustomTargetingValueModel{Attributes: *result}
results = append(results, ctvp)
}
return results, nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment