代码拉取完成,页面将自动刷新
package pg
import (
"fmt"
"log"
"strings"
)
type Table struct {
Name string
Desc string
Struct interface{}
Constraints []string
Options []string
ExtraSqls []string
}
// Sql add create table sql
// Using Name as table name, Desc as table description, Struct struct as table columns and comments.
func (t Table) Sql() string {
t.Name = strings.TrimSpace(t.Name)
if t.Name == "" {
log.Panic("table name required")
}
t.Desc = strings.TrimSpace(t.Desc)
if t.Desc == "" {
log.Panic("table desc required")
}
if t.Struct == nil {
log.Panic("table struct required")
}
columns := columnsFromStruct(t.Struct)
columns = append(columns, t.Constraints...)
for i := range columns {
columns[i] = ` ` + strings.TrimRight(strings.TrimSpace(columns[i]), `,`)
}
columnsStr := strings.Join(columns, ",\n")
for i := range t.Options {
t.Options[i] = "\n" + strings.TrimSpace(t.Options[i])
}
optionsSql := strings.Join(t.Options, "")
for i := range t.ExtraSqls {
t.ExtraSqls[i] = ensureTail(strings.TrimSpace(t.ExtraSqls[i]), ';') + "\n"
}
extSqlsStr := strings.Join(t.ExtraSqls, "")
sql := fmt.Sprintf(`CREATE TABLE IF NOT EXISTS %s (
%s
)%s;
%sCOMMENT ON TABLE %s is %s;
%s`, t.Name, columnsStr, optionsSql, extSqlsStr, t.Name, Q(t.Desc), ColumnsComments(t.Name, t.Struct))
return sql
}
func ensureTail(str string, tail byte) string {
if str[len(str)-1] == tail {
return str
}
return str + string(tail)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。