Initial source commit

This commit is contained in:
2026-05-03 19:23:27 +02:00
parent b27b9add45
commit 106e5c3dc5
10 changed files with 511 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
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()
}