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() }