aboutsummaryrefslogtreecommitdiff
path: root/src/post/hooks.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/post/hooks.go')
-rw-r--r--src/post/hooks.go39
1 files changed, 39 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
+}