1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package rest
- import (
- "fmt"
- "time"
- )
- var (
- fieldConverters = make(map[string]*FieldConverter)
- )
- type FieldConverter struct {
- Pack func(any) any
- Unpack func(any) (any, error)
- }
- func RegisterFieldConverter(name string, converter *FieldConverter) {
- fieldConverters[name] = converter
- }
- var (
- fcTime = &FieldConverter{
- Pack: func(v any) any {
- t := v.(time.Time)
- return t.Format("02.01.2006 15:04")
- },
- Unpack: func(val any) (any, error) {
- ts, check := val.(string)
- if !check {
- return nil, fmt.Errorf("expected string")
- }
- layout := "02.01.2006 15:04"
- parsedTime, err := time.Parse(layout, ts)
- if err != nil {
- return nil, err
- }
- return parsedTime, nil
- },
- }
- )
- func init() {
- RegisterFieldConverter("time.Time", fcTime)
- }
|