Files
mayfly-go/server/internal/db/dbm/postgres/helper.go

41 lines
1.0 KiB
Go
Raw Normal View History

2024-03-26 21:46:03 +08:00
package postgres
import (
"fmt"
"io"
"mayfly-go/internal/db/dbm/dbi"
"regexp"
"strings"
)
var (
// 提取pg默认值 如:'id'::varchar 提取id '-1'::integer 提取-1
defaultValueRegexp = regexp.MustCompile(`'([^']*)'`)
)
2024-12-08 13:04:23 +08:00
func FixColumnDefault(column *dbi.Column) {
2024-03-26 21:46:03 +08:00
// 如果默认值带冒号,如:'id'::varchar
if column.ColumnDefault != "" && strings.Contains(column.ColumnDefault, "::") && !strings.HasPrefix(column.ColumnDefault, "nextval") {
match := defaultValueRegexp.FindStringSubmatch(column.ColumnDefault)
if len(match) > 1 {
column.ColumnDefault = match[1]
}
}
}
type DumpHelper struct {
dbi.DefaultDumpHelper
}
func (dh *DumpHelper) AfterInsert(writer io.Writer, tableName string, columns []dbi.Column) {
// 设置自增序列当前值
for _, column := range columns {
2025-02-20 17:07:13 +08:00
if column.AutoIncrement {
2024-03-26 21:46:03 +08:00
seq := fmt.Sprintf("SELECT setval('%s_%s_seq', (SELECT max(%s) FROM %s));\n", tableName, column.ColumnName, column.ColumnName, tableName)
writer.Write([]byte(seq))
}
}
writer.Write([]byte("COMMIT;\n"))
}