/
persistences.go
109 lines (88 loc) · 2.83 KB
/
persistences.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package auditlogs
import (
"context"
"database/sql"
"fmt"
"time"
"github.com/volatiletech/sqlboiler/v4/queries/qm"
"github.com/volatiletech/sqlboiler/v4/boil"
"github.com/volatiletech/null/v8"
models "github.com/cam-inc/viron/packages/golang/repositories/mysql/gen"
"github.com/cam-inc/viron/packages/golang/repositories"
)
type auditLogsPersistence struct {
conn *sql.DB
}
func (a *auditLogsPersistence) FindOne(ctx context.Context, id string) (repositories.Entity, error) {
panic("implement me")
}
func (a *auditLogsPersistence) Find(ctx context.Context, conditions repositories.Conditions) (repositories.EntitySlice, error) {
mods := conditions.ConvertConditionMySQL()
mods = append(mods, conditions.ConvertPager().PaginateMySQL()...)
list := repositories.EntitySlice{}
result, err := models.Auditlogs(mods...).All(ctx, a.conn)
if err != nil {
return nil, err
}
for _, r := range result {
auditlog := &repositories.AuditLogEntity{
ID: fmt.Sprintf("%d", r.ID),
RequestMethod: r.RequestMethod.Ptr(),
RequestUri: r.RequestUri.Ptr(),
SourceIp: r.SourceIp.Ptr(),
UserID: r.UserId.Ptr(),
RequestBody: r.RequestBody.Ptr(),
CreatedAt: r.CreatedAt,
UpdatedAt: r.UpdatedAt,
}
if r.StatusCode.Valid {
status := int(r.StatusCode.Uint)
auditlog.StatusCode = &status
}
list = append(list, auditlog)
}
return list, nil
}
func (a *auditLogsPersistence) Count(ctx context.Context, conditions repositories.Conditions) int {
var mods []qm.QueryMod
if conditions != nil {
mods = conditions.ConvertConditionMySQL()
}
count, err := models.Auditlogs(mods...).Count(ctx, a.conn)
if err != nil {
return 0
}
return int(count)
}
func (a *auditLogsPersistence) CreateOne(ctx context.Context, entity repositories.Entity) (repositories.Entity, error) {
audit := &repositories.AuditLogEntity{}
if err := entity.Bind(audit); err != nil {
return nil, err
}
model := &models.Auditlog{
RequestMethod: null.StringFromPtr(audit.RequestMethod),
RequestUri: null.StringFromPtr(audit.RequestUri),
SourceIp: null.StringFromPtr(audit.SourceIp),
UserId: null.StringFromPtr(audit.UserID),
RequestBody: null.StringFromPtr(audit.RequestBody),
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
if audit.StatusCode != nil {
model.StatusCode = null.UintFrom(uint(*audit.StatusCode))
}
if err := model.Insert(ctx, a.conn, boil.Infer()); err != nil {
return nil, err
}
audit.ID = fmt.Sprintf("%d", model.ID)
return audit, nil
}
func (a *auditLogsPersistence) UpdateByID(ctx context.Context, id string, entity repositories.Entity) error {
panic("implement me")
}
func (a *auditLogsPersistence) RemoveByID(ctx context.Context, id string) error {
panic("implement me")
}
func New(db *sql.DB) repositories.Repository {
return &auditLogsPersistence{conn: db}
}