36 lines
590 B
Go
36 lines
590 B
Go
package training
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type TrainingID uuid.UUID
|
|
|
|
func NewTrainingID() TrainingID {
|
|
return TrainingID(uuid.Must(uuid.NewV7()))
|
|
}
|
|
|
|
func (id TrainingID) String() string {
|
|
return uuid.UUID(id).String()
|
|
}
|
|
|
|
func (id TrainingID) MarshalJSON() ([]byte, error) {
|
|
return json.Marshal(uuid.UUID(id))
|
|
}
|
|
|
|
func (id *TrainingID) UnmarshalJSON(data []byte) error {
|
|
var u uuid.UUID
|
|
if err := json.Unmarshal(data, &u); err != nil {
|
|
return err
|
|
}
|
|
*id = TrainingID(u)
|
|
return nil
|
|
}
|
|
|
|
type Training struct {
|
|
ID TrainingID
|
|
Name string
|
|
Days int32
|
|
}
|