Files
gormlint/relationsCheck/constraints.go
2025-03-18 03:45:42 +07:00

30 lines
888 B
Go

package relationsCheck
import (
"github.com/kuzgoga/gormlint/common"
"golang.org/x/tools/go/analysis"
"strings"
)
func CheckCascadeDelete(pass *analysis.Pass, field common.Field) bool {
if !field.Tags.HasParam("constraint") {
pass.Reportf(field.Pos, "field %s should have a delete 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
}