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
|
package user
import (
"context"
validation "github.com/go-ozzo/ozzo-validation/v4"
"github.com/volatiletech/sqlboiler/v4/boil"
"gitlab.com/alexkavon/newsstand/src/models"
)
func InitInsertHooks() {
models.AddUserHook(boil.BeforeInsertHook, validateNewHook)
// should always be last
models.AddUserHook(boil.BeforeInsertHook, hashSecretHook)
}
func validateNewHook(ctx context.Context, exec boil.ContextExecutor, u *models.User) error {
// validate user
err := validation.ValidateStruct(u,
validation.Field(&u.Username, validation.Required, validation.Length(3, 50)),
validation.Field(&u.Secret, validation.Required, validation.Length(8, 128)),
)
if err != nil {
return err
}
return nil
}
func hashSecretHook(ctx context.Context, exec boil.ContextExecutor, u *models.User) error {
hashed, err := hashSecret(u.Secret)
if err != nil {
return err
}
u.Secret = hashed
return nil
}
|