aboutsummaryrefslogtreecommitdiff
path: root/application_router.go
diff options
context:
space:
mode:
Diffstat (limited to 'application_router.go')
-rw-r--r--application_router.go71
1 files changed, 20 insertions, 51 deletions
diff --git a/application_router.go b/application_router.go
index dc9f9d4..656b63e 100644
--- a/application_router.go
+++ b/application_router.go
@@ -22,8 +22,6 @@ import (
"fmt"
"github.com/gin-gonic/contrib/static"
"github.com/gin-gonic/gin"
- "github.com/gin-gonic/gin/binding"
- "github.com/go-playground/validator/v10"
log "github.com/sirupsen/logrus"
"net/http"
"os"
@@ -297,71 +295,42 @@ func CreateApplicationRouter(applicationContext *ApplicationContext,
})
api.GET("/searches", func(c *gin.Context) {
- success(c, applicationContext.SearchController.PerformedSearches())
+ success(c, applicationContext.SearchController.GetPerformedSearches())
})
api.POST("/searches/perform", func(c *gin.Context) {
var options SearchOptions
-
- parentIsZero := func (fl validator.FieldLevel) bool {
- log.Println(fl.FieldName())
- log.Println("noooooo")
- return fl.Parent().IsZero()
- }
- eitherWith := func (fl validator.FieldLevel) bool {
- otherField := fl.Parent().FieldByName(fl.Param())
- log.Println(fl.Param())
- log.Println("bbbbbbbbbb")
- return (fl.Field().IsZero() && !otherField.IsZero()) || (!fl.Field().IsZero() && otherField.IsZero())
- }
- aaa := func (fl validator.FieldLevel) bool {
-
- log.Println("awww")
- return fl.Field().IsZero()
+ if err := c.ShouldBindJSON(&options); err != nil {
+ badRequest(c, err)
+ return
}
- bbb := func (fl validator.FieldLevel) bool {
-
- log.Println("iiiii")
- return true
+ // stupid checks because validator library is a shit
+ var badContentError error
+ if options.TextSearch.isZero() == options.RegexSearch.isZero() {
+ badContentError = errors.New("specify either 'text_search' or 'regex_search'")
}
-
- if validate, ok := binding.Validator.Engine().(*validator.Validate); ok {
- if err := validate.RegisterValidation("parent_is_zero", parentIsZero); err != nil {
- log.WithError(err).Panic("cannot register 'topzero' validator")
+ if !options.TextSearch.isZero() {
+ if (options.TextSearch.Terms == nil) == (options.TextSearch.ExactPhrase == "") {
+ badContentError = errors.New("specify either 'terms' or 'exact_phrase'")
}
- if err := validate.RegisterValidation("either_with", eitherWith); err != nil {
- log.WithError(err).Panic("cannot register 'either_with' validator")
+ if (options.TextSearch.Terms == nil) && (options.TextSearch.ExcludedTerms != nil) {
+ badContentError = errors.New("'excluded_terms' must be specified only with 'terms'")
}
- if err := validate.RegisterValidation("aaa", aaa); err != nil {
- log.WithError(err).Panic("cannot register 'either_with' validator")
- }
- if err := validate.RegisterValidation("bbb", bbb); err != nil {
- log.WithError(err).Panic("cannot register 'either_with' validator")
+ }
+ if !options.RegexSearch.isZero() {
+ if (options.RegexSearch.Pattern == "") == (options.RegexSearch.NotPattern == "") {
+ badContentError = errors.New("specify either 'pattern' or 'not_pattern'")
}
- } else {
- log.Panic("cannot ")
}
-
- if err := c.ShouldBindJSON(&options); err != nil {
- badRequest(c, err)
+ if badContentError != nil {
+ badRequest(c, badContentError)
return
}
- log.Println(options)
-
-
- success(c, "ok")
-
-
-
-
-
-
-
- //success(c, applicationContext.SearchController.PerformSearch(c, options))
+ success(c, applicationContext.SearchController.PerformSearch(c, options))
})
api.GET("/streams/:id", func(c *gin.Context) {