package ticket import ( _ "embed" "fmt" "github.com/lithammer/shortuuid/v4" "google.golang.org/protobuf/encoding/protojson" "time" ) func New(id string) *Ticket { return &Ticket{ Id: id, Thread: []*Message{}, } } func NewId(suffix string) string { now := time.Now() return fmt.Sprintf("t%s%d%03d-%s", suffix, now.Year(), now.YearDay(), shortuuid.New()) } func (t *Ticket) Marshal() ([]byte, error) { return protojson.Marshal(t) } //goland:noinspection GoUnusedExportedFunction func Unmarshal(d []byte) (*Ticket, error) { t := &Ticket{} if err := protojson.Unmarshal(d, t); err != nil { return nil, err } return t, nil }