emd-ditem.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package spider
  2. import (
  3. "encoding/json"
  4. "errors"
  5. e "github.com/dabory/abango-rest/etc"
  6. "github.com/elastic/go-elasticsearch/v7"
  7. )
  8. type SchDitem struct {
  9. Id string //PdplinkHash
  10. // PdplinkHash string
  11. TopUrl string
  12. TargetPath string // URL without scheme info
  13. HtmlHash string
  14. HubUrls string
  15. IgroupCode string
  16. IgroupName string
  17. Categories string
  18. Emails string
  19. ItemName string
  20. Tags string
  21. Currency string
  22. SalesPrice string
  23. Images string
  24. ShortDesc string
  25. TextDesc string
  26. OgMetas string
  27. ItemOptions string
  28. OriginDesc string
  29. Manufacturer string
  30. Origin string
  31. Language string
  32. DeliveryPrice string
  33. ModelNo string
  34. Sku string
  35. // ItemNick string
  36. // ModelName string
  37. // ModelNo string
  38. // BrandName string
  39. // MinimumQty float32
  40. // UserCredit float32
  41. // Suggest []string
  42. // Cats []string
  43. // Options []struct {
  44. // Name string
  45. // Choices []struct {
  46. // Name string
  47. // Price string
  48. // }
  49. // }
  50. }
  51. type SchDitemRow struct {
  52. ID string `json:"_id"`
  53. Index string `json:"_index"`
  54. Score float64 `json:"_score"`
  55. Source SchDitem `json:"_source"`
  56. Type string `json:"_type"`
  57. }
  58. func (t *SchDitem) TableName() string { // 반드시 있어야 table name을 가져올 수 있다.
  59. return e.TableName(*t)
  60. }
  61. func (t *SchDitem) RecordName() string { //필수
  62. return "Id of " + t.Id + " in " + e.TableName(*t) + " "
  63. }
  64. func (t *SchDitem) GetaRow(y *elasticsearch.Client) error {
  65. res, err := y.Get(e.TableName(*t), t.Id)
  66. defer res.Body.Close()
  67. if err != nil {
  68. return e.LogErr("qrlhbdft", "Error of index: "+t.TableName()+": ", err)
  69. } else {
  70. if res.IsError() { //NotFound
  71. return errors.New(e.RecNotFound("qrhbdfke4k", "in "+t.TableName()+" of Id: "+t.Id))
  72. }
  73. }
  74. var resJs SchDitemRow
  75. if err := json.NewDecoder(res.Body).Decode(&resJs); err != nil {
  76. return e.LogErr("qrlhbdfk", "Error decoding "+t.TableName()+": ", err)
  77. }
  78. *t = SchDitem(resJs.Source)
  79. // *t = resJs.Source
  80. return nil
  81. }
  82. // func (t *SchDitem) AddaRow(y *elasticsearch.Client) error {
  83. // data, _ := json.Marshal(t)
  84. // res, err := y.Index(
  85. // e.TableName(*t),
  86. // bytes.NewReader(data),
  87. // y.Index.WithDocumentID((t.Id)))
  88. // defer res.Body.Close()
  89. // if err != nil {
  90. // return errors.New(e.RecAddErr("jfhgytg", t.RecordName()+err.Error()))
  91. // }
  92. // return nil
  93. // }
  94. // func (t *SchDitem) DelaRow(y *elasticsearch.Client) error {
  95. // res, err := y.Delete(e.TableName(*t), t.Id)
  96. // defer res.Body.Close()
  97. // if err != nil {
  98. // return errors.New(e.RecAddErr("jfhgy4tg", t.RecordName()+err.Error()))
  99. // }
  100. // return nil
  101. // }