ticket.go 974 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package ticket
  2. import (
  3. "encoding/json"
  4. "github.com/ClickHouse/clickhouse-go/v2/lib/driver"
  5. "google.golang.org/protobuf/types/known/timestamppb"
  6. "time"
  7. )
  8. func (x *Ticket) Scan(row driver.Rows) error {
  9. var (
  10. from map[string]string
  11. createdAt time.Time
  12. updatedAt time.Time
  13. messageIds []string
  14. subjects []string
  15. err error
  16. )
  17. if err = row.Scan(
  18. &x.TicketId,
  19. &x.ThreadId,
  20. &x.To,
  21. &from,
  22. &x.Flags,
  23. &x.Meta,
  24. &x.Tags,
  25. &createdAt,
  26. &updatedAt,
  27. &messageIds,
  28. &subjects,
  29. ); err != nil {
  30. return err
  31. }
  32. x.From = &EmailAddress{
  33. Address: from["address"],
  34. Name: from["name"],
  35. }
  36. x.CreatedAt = timestamppb.New(createdAt)
  37. x.UpdatedAt = timestamppb.New(updatedAt)
  38. if len(messageIds) > 0 {
  39. if d, err := json.Marshal(messageIds); err == nil {
  40. x.Meta["message_ids"] = string(d)
  41. }
  42. }
  43. if len(subjects) > 0 {
  44. if d, err := json.Marshal(subjects); err == nil {
  45. x.Meta["subjects"] = string(d)
  46. }
  47. }
  48. return nil
  49. }