From 60eb2e7fe5ed3627ad4bd40286df1741529da75b Mon Sep 17 00:00:00 2001 From: Alexander Kavon Date: Thu, 25 Jan 2024 02:47:26 -0500 Subject: update hooks to more identifiable names, update migrations to work with votes, use a common enum state type --- src/post/hooks.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/post/hooks.go (limited to 'src/post/hooks.go') 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 +} -- cgit v1.2.3