Skip to content

Commit 096ccfd

Browse files
author
nukosuke
authored
Merge pull request #286 from paoloromolini/custom_objects_v2_search
feat: add SearchCustomObjectRecords function
2 parents 1684b1d + eacd31f commit 096ccfd

File tree

2 files changed

+63
-5
lines changed

2 files changed

+63
-5
lines changed

zendesk/custom_object.go

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,14 @@ type CustomObjectRecord struct {
2424
type CustomObjectAPI interface {
2525
CreateCustomObjectRecord(
2626
ctx context.Context, record CustomObjectRecord, customObjectKey string) (CustomObjectRecord, error)
27-
SearchCustomObjectRecords(
27+
AutocompleteSearchCustomObjectRecords(
2828
ctx context.Context,
2929
customObjectKey string,
3030
opts *CustomObjectAutocompleteOptions,
3131
) ([]CustomObjectRecord, Page, error)
32+
SearchCustomObjectRecords(
33+
ctx context.Context, customObjectKey string, opts *SearchCustomObjectRecordsOptions,
34+
) ([]CustomObjectRecord, Page, error)
3235
ListCustomObjectRecords(
3336
ctx context.Context, customObjectKey string, opts *CustomObjectListOptions) ([]CustomObjectRecord, Page, error)
3437
ShowCustomObjectRecord(
@@ -98,19 +101,58 @@ func (z *Client) ListCustomObjectRecords(
98101
return result.CustomObjectRecords, result.Page, nil
99102
}
100103

104+
// AutocompleteSearchCustomObjectRecords search for a custom object record by the name field
105+
// https://developer.zendesk.com/api-reference/custom-objects/custom_object_records/#autocomplete-custom-object-record-search
106+
func (z *Client) AutocompleteSearchCustomObjectRecords(
107+
ctx context.Context, customObjectKey string, opts *CustomObjectAutocompleteOptions,
108+
) ([]CustomObjectRecord, Page, error) {
109+
var result struct {
110+
CustomObjectRecords []CustomObjectRecord `json:"custom_object_records"`
111+
Page
112+
}
113+
tmp := opts
114+
if tmp == nil {
115+
tmp = &CustomObjectAutocompleteOptions{}
116+
}
117+
url := fmt.Sprintf("/custom_objects/%s/records/autocomplete", customObjectKey)
118+
urlWithOptions, err := addOptions(url, tmp)
119+
body, err := z.get(ctx, urlWithOptions)
120+
121+
if err != nil {
122+
return nil, Page{}, err
123+
}
124+
err = json.Unmarshal(body, &result)
125+
if err != nil {
126+
return nil, Page{}, err
127+
}
128+
return result.CustomObjectRecords, result.Page, nil
129+
}
130+
131+
type SearchCustomObjectRecordsOptions struct {
132+
PageOptions
133+
134+
// One of name, created_at, updated_at, -name, -created_at, or -updated_at.
135+
// The - denotes the sort will be descending. Defaults to sorting by relevance.
136+
Sort string `url:"sort,omitempty"`
137+
138+
// Query string
139+
Query string `url:"query,omitempty"`
140+
}
141+
101142
// SearchCustomObjectRecords search for a custom object record by the name field
102143
// https://developer.zendesk.com/api-reference/custom-objects/custom_object_records/#search-custom-object-records
103144
func (z *Client) SearchCustomObjectRecords(
104-
ctx context.Context, customObjectKey string, opts *CustomObjectAutocompleteOptions) ([]CustomObjectRecord, Page, error) {
145+
ctx context.Context, customObjectKey string, opts *SearchCustomObjectRecordsOptions,
146+
) ([]CustomObjectRecord, Page, error) {
105147
var result struct {
106148
CustomObjectRecords []CustomObjectRecord `json:"custom_object_records"`
107149
Page
108150
}
109151
tmp := opts
110152
if tmp == nil {
111-
tmp = &CustomObjectAutocompleteOptions{}
153+
tmp = &SearchCustomObjectRecordsOptions{}
112154
}
113-
url := fmt.Sprintf("/custom_objects/%s/records/autocomplete", customObjectKey)
155+
url := fmt.Sprintf("/custom_objects/%s/records/search", customObjectKey)
114156
urlWithOptions, err := addOptions(url, tmp)
115157
body, err := z.get(ctx, urlWithOptions)
116158

zendesk/mock/client.go

Lines changed: 17 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)