feat: many-to-one check, constrints check

This commit is contained in:
2025-03-17 13:13:35 +07:00
parent 4b5580b1c8
commit 60e0a64a24
6 changed files with 168 additions and 18 deletions

View File

@@ -0,0 +1,29 @@
package relationsCheck
import (
"golang.org/x/tools/go/analysis"
"gormlint/common"
"strings"
)
func CheckCascadeDelete(pass *analysis.Pass, field common.Field) bool {
if !field.Tags.HasParam("constraint") {
pass.Reportf(field.Pos, "field %s should have a constraint", field.Name)
return true
}
constraintValue := field.Tags.GetParam("constraint").Value
pair := strings.Split(constraintValue, ":")
trigger, value := pair[0], pair[1]
if strings.ToLower(trigger) == "OnDelete" && strings.ToUpper(value) != "CASCADE" {
pass.Reportf(field.Pos, "field have invalid constraint on `OnDelete trigger`")
return true
}
if field.Tags.HasParam("OnDelete") {
if strings.ToUpper(field.Tags.GetParam("OnDelete").Value) != "CASCADE" {
pass.Reportf(field.Pos, "field have invalid constraint on `OnDelete` trigger")
return true
}
}
return false
}