package rest import ( "fmt" "reflect" "time" ) // Time используется для формирования объекта времени из формата UnixMilli, а так же выгрузки в этот формат в результирующем объекте type Time time.Time // RestFields выгружает объект в результирующий объект в формат UnixMilli func (s *Time) RestFields(fieldName string, names ...any) (any, IErrorArgs) { if len(names) > 0 { return nil, ErrorFiled(fmt.Sprintf("%v.%v", fieldName, names[0]), "field is not exists") } return time.Time(*s).UnixMilli(), nil } // RestFrom формирует из поля типа int64 объект времени func (s *Time) RestFrom(source any) (err IErrorArgs) { defer func() { if r := recover(); r != nil { err = ErrorMessage("ErrParse", fmt.Sprintf("time: expected millisecond timestamp, given: %v", source)) } }() rVal := reflect.ValueOf(source) *s = Time(time.UnixMilli(rVal.Int())) return } // Time возвращает объект времени типа time.Time func (s *Time) Time() time.Time { return time.Time(*s) }