package ticket import ( "encoding/json" "github.com/ClickHouse/clickhouse-go/v2/lib/driver" "google.golang.org/protobuf/types/known/timestamppb" "time" ) func (x *Ticket) Scan(row driver.Rows) error { var ( from map[string]string createdAt time.Time updatedAt time.Time messageIds []string subjects []string err error ) if err = row.Scan( &x.TicketId, &x.ThreadId, &x.To, &from, &x.Flags, &x.Meta, &x.Tags, &createdAt, &updatedAt, &messageIds, &subjects, ); err != nil { return err } x.From = &EmailAddress{ Address: from["address"], Name: from["name"], } x.CreatedAt = timestamppb.New(createdAt) x.UpdatedAt = timestamppb.New(updatedAt) if len(messageIds) > 0 { if d, err := json.Marshal(messageIds); err == nil { x.Meta["message_ids"] = string(d) } } if len(subjects) > 0 { if d, err := json.Marshal(subjects); err == nil { x.Meta["subjects"] = string(d) } } return nil } func (x *Ticket) MessageIds() []string { var ids []string if v, ok := x.Meta["message_ids"]; ok { _ = json.Unmarshal([]byte(v), &ids) } return ids } func (x *Ticket) Subjects() []string { var ids []string if v, ok := x.Meta["subjects"]; ok { _ = json.Unmarshal([]byte(v), &ids) } return ids }