Files
simpleorm/constraint.go
T
2026-05-03 19:23:27 +02:00

60 lines
1.0 KiB
Go

package simpleorm
import "strings"
type Constraint struct {
Name string
Type string
Columns []Column
RefTable *Table
RefColumns []Column
}
func (c *Constraint) ToDDL() string {
switch c.Type {
case "pk":
return c.toPkDDL()
case "fk":
return c.toFkDDL()
}
return ""
}
func (c *Constraint) toPkDDL() string {
var ddl strings.Builder
ddl.WriteString("CONSTRAINT " + c.Name + " PRIMARY KEY(")
for i, col := range c.Columns {
if i != 0 {
ddl.WriteString(", ")
}
ddl.WriteString(col.Name)
}
ddl.WriteString(")")
return ddl.String()
}
func (c *Constraint) toFkDDL() string {
var ddl strings.Builder
ddl.WriteString("CONSTRAINT " + c.Name + " FOREIGN KEY(")
for i, col := range c.Columns {
if i != 0 {
ddl.WriteString(", ")
}
ddl.WriteString(col.Name)
}
ddl.WriteString(") REFERENCES " + c.RefTable.Name + "(")
for i, col := range c.RefColumns {
if i != 0 {
ddl.WriteString(", ")
}
ddl.WriteString(col.Name)
}
ddl.WriteString(")")
return ddl.String()
}