ticket.go 821 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. err error
  15. )
  16. if err = row.Scan(
  17. &x.TicketId,
  18. &x.ThreadId,
  19. &x.To,
  20. &from,
  21. &x.Flags,
  22. &x.Meta,
  23. &x.Tags,
  24. &createdAt,
  25. &updatedAt,
  26. &messageIds,
  27. ); err != nil {
  28. return err
  29. }
  30. x.From = &EmailAddress{
  31. Address: from["address"],
  32. Name: from["name"],
  33. }
  34. x.CreatedAt = timestamppb.New(createdAt)
  35. x.UpdatedAt = timestamppb.New(updatedAt)
  36. if len(messageIds) > 0 {
  37. if d, err := json.Marshal(messageIds); err == nil {
  38. x.Meta["message_ids"] = string(d)
  39. }
  40. }
  41. return nil
  42. }