2 Star 1 Fork 1

mosache / YFrame

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
dialect.go 1.12 KB
一键复制 编辑 原始数据 按行查看 历史
ヤ沒脩袮兲︶ 提交于 2023-06-19 18:32 . temp
package orm
import (
"errors"
"gitee.com/mosache/YFrame/orm/internal/errs"
)
type Dialect interface {
// 表名,列名标记符号 mysql `
Quoter() string
BuildOnDuplicateKey(b *builder, odk *OnDuplicateKey) error
}
type StandSQL struct{}
func (s StandSQL) Quoter() string {
return "`"
}
func (s StandSQL) BuildOnDuplicateKey(b *builder, odk *OnDuplicateKey) error {
b.sb.WriteString(" ON DUPLICATE KEY UPDATE ")
for idx, e := range odk.assigns {
if idx != 0 {
b.sb.WriteString(",")
}
switch c := e.(type) {
case Assignment:
b.sb.WriteString("`")
fd, ok := b.m.FieldMap[c.Column]
if !ok {
return errs.NewErrUnknownField(c.Column)
}
b.sb.WriteString(fd.ColumnName)
b.sb.WriteString("` ")
b.sb.WriteString("= ")
b.sb.WriteString("?")
b.args = append(b.args, c.Val)
case Column:
fd, ok := b.m.FieldMap[c.Name]
if !ok {
return errs.NewErrUnknownField(c.Name)
}
b.Quoter(fd.ColumnName)
b.sb.WriteString("=")
b.sb.WriteString("VALUES(")
b.Quoter(fd.ColumnName)
b.sb.WriteString(")")
default:
return errors.New("unsupported assign type")
}
}
return nil
}
Go
1
https://gitee.com/mosache/YFrame.git
git@gitee.com:mosache/YFrame.git
mosache
YFrame
YFrame
v0.1.76

搜索帮助