fetch_source_context.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Copyright 2012-2015 Oliver Eilhard. All rights reserved.
  2. // Use of this source code is governed by a MIT-license.
  3. // See http://olivere.mit-license.org/license.txt for details.
  4. package elastic
  5. import (
  6. "net/url"
  7. "strings"
  8. )
  9. type FetchSourceContext struct {
  10. fetchSource bool
  11. transformSource bool
  12. includes []string
  13. excludes []string
  14. }
  15. func NewFetchSourceContext(fetchSource bool) *FetchSourceContext {
  16. return &FetchSourceContext{
  17. fetchSource: fetchSource,
  18. includes: make([]string, 0),
  19. excludes: make([]string, 0),
  20. }
  21. }
  22. func (fsc *FetchSourceContext) FetchSource() bool {
  23. return fsc.fetchSource
  24. }
  25. func (fsc *FetchSourceContext) SetFetchSource(fetchSource bool) {
  26. fsc.fetchSource = fetchSource
  27. }
  28. func (fsc *FetchSourceContext) Include(includes ...string) *FetchSourceContext {
  29. fsc.includes = append(fsc.includes, includes...)
  30. return fsc
  31. }
  32. func (fsc *FetchSourceContext) Exclude(excludes ...string) *FetchSourceContext {
  33. fsc.excludes = append(fsc.excludes, excludes...)
  34. return fsc
  35. }
  36. func (fsc *FetchSourceContext) TransformSource(transformSource bool) *FetchSourceContext {
  37. fsc.transformSource = transformSource
  38. return fsc
  39. }
  40. func (fsc *FetchSourceContext) Source() interface{} {
  41. if !fsc.fetchSource {
  42. return false
  43. }
  44. return map[string]interface{}{
  45. "includes": fsc.includes,
  46. "excludes": fsc.excludes,
  47. }
  48. }
  49. // Query returns the parameters in a form suitable for a URL query string.
  50. func (fsc *FetchSourceContext) Query() url.Values {
  51. params := url.Values{}
  52. if !fsc.fetchSource {
  53. params.Add("_source", "false")
  54. return params
  55. }
  56. if len(fsc.includes) > 0 {
  57. params.Add("_source_include", strings.Join(fsc.includes, ","))
  58. }
  59. if len(fsc.excludes) > 0 {
  60. params.Add("_source_exclude", strings.Join(fsc.excludes, ","))
  61. }
  62. return params
  63. }