Initial source commit
This commit is contained in:
@@ -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()
|
||||
}
|
||||
Reference in New Issue
Block a user