diff options
Diffstat (limited to 'src/post')
| -rw-r--r-- | src/post/hooks.go | 39 | ||||
| -rw-r--r-- | src/post/routes.go | 4 |
2 files changed, 43 insertions, 0 deletions
diff --git a/src/post/hooks.go b/src/post/hooks.go new file mode 100644 index 0000000..16a2df0 --- /dev/null +++ b/src/post/hooks.go @@ -0,0 +1,39 @@ +package post + +import ( + "context" + + validation "github.com/go-ozzo/ozzo-validation/v4" + "github.com/go-ozzo/ozzo-validation/v4/is" + "github.com/volatiletech/sqlboiler/v4/boil" + "gitlab.com/alexkavon/newsstand/src/models" +) + +func InitInsertHooks() { + models.AddPostHook(boil.BeforeInsertHook, validateNewPostHook) +} + +func validateNewPostHook(ctx context.Context, exec boil.ContextExecutor, p *models.Post) error { + err := validation.ValidateStruct(p, + validation.Field(&p.Title, validation.Required, validation.Length(10, 80)), + validation.Field(&p.Description, validation.Max(5000)), + validation.Field(&p.URL, validation.Length(3, 255), is.URL), + ) + if err != nil { + return err + } + + return nil +} + +func checkDescriptionLength() { + // check if post/comment description is <= 5000 characters +} + +func stripMarkdown() { + // strip of specific tags or all tags +} + +func checkBlacklist() { + // check if URL is on blacklist +} diff --git a/src/post/routes.go b/src/post/routes.go index 7714920..9726d05 100644 --- a/src/post/routes.go +++ b/src/post/routes.go @@ -14,6 +14,10 @@ import ( "gitlab.com/alexkavon/newsstand/src/sessions" ) +func init() { + InitInsertHooks() +} + var Routes = server.Routes{ server.Route{ Name: "Create", |
