-
Notifications
You must be signed in to change notification settings - Fork 0
/
view_model.go
48 lines (43 loc) · 1.12 KB
/
view_model.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package misc
import (
"github.com/anden007/dp_clean_core/pkg/base"
"github.com/gotidy/copy"
"github.com/kataras/iris/v12"
jsonTime "github.com/liamylian/jsontime/v2/v2"
)
func ReadBody(ctx iris.Context, vModel base.IViewModel) (err error) {
jsonEncoder := jsonTime.ConfigWithCustomTimeFormat
if ctx != nil {
if payload, bodyErr := ctx.GetBody(); bodyErr == nil {
err = jsonEncoder.Unmarshal(payload, &vModel)
if err == nil {
err = vModel.ToDBModel()
}
} else {
err = bodyErr
}
}
return
}
func DBModelList2ViewList[Source base.IDBModel, DEST base.IViewModel](models []Source) (result []DEST, err error) {
copiers := copy.New()
copier := copiers.Get(new(DEST), new(Source))
for i := 0; i < len(models); i++ {
var dst DEST
copier.Copy(&dst, &(models[i]))
if err == nil {
err = dst.ToViewModel()
}
result = append(result, dst)
}
return
}
func DBModel2View[Source base.IDBModel, DEST base.IViewModel](model Source) (result DEST, err error) {
copiers := copy.New()
copier := copiers.Get(new(DEST), new(Source))
copier.Copy(&result, &(model))
if err == nil {
err = result.ToViewModel()
}
return
}