This commit is contained in:
@@ -53,3 +53,24 @@ func PtrToText(s *string) pgtype.Text {
|
||||
Valid: true,
|
||||
}
|
||||
}
|
||||
|
||||
func TextToPtr(v pgtype.Text) *string {
|
||||
if !v.Valid {
|
||||
return nil
|
||||
}
|
||||
return &v.String
|
||||
}
|
||||
|
||||
func Int4ToPtr(v pgtype.Int4) *int32 {
|
||||
if !v.Valid {
|
||||
return nil
|
||||
}
|
||||
return &v.Int32
|
||||
}
|
||||
|
||||
func Int4ToInt32(v pgtype.Int4) int32 {
|
||||
if v.Valid {
|
||||
return v.Int32
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -32,6 +32,33 @@ func init() {
|
||||
}
|
||||
return isImageURL(val)
|
||||
})
|
||||
|
||||
validate.RegisterValidation("optional_url", func(fl validator.FieldLevel) bool {
|
||||
val := fl.Field().String()
|
||||
if val == "" {
|
||||
return true
|
||||
}
|
||||
return isValidURL(val)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
func isValidURL(s string) bool {
|
||||
u, err := url.ParseRequestURI(s)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
if u.Scheme != "http" && u.Scheme != "https" {
|
||||
return false
|
||||
}
|
||||
|
||||
if u.Host == "" || !strings.Contains(u.Host, ".") {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func isImageURL(u string) bool {
|
||||
@@ -116,4 +143,4 @@ func ValidateBodyDto(c fiber.Ctx, dto any) []*ErrorResponse {
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user