
use golangci/golangci-lint-action instead of reviewdog/action-golangci-lint as the second was not reporting any failures even if there was some. Report code coverage with codecov/codecov-action I have set some flags per dialect and go version Several linters has been fixed, some disabled so the build can pass
87 lines
1.7 KiB
Go
87 lines
1.7 KiB
Go
package tests
|
|
|
|
import (
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/clause"
|
|
"gorm.io/gorm/logger"
|
|
"gorm.io/gorm/schema"
|
|
)
|
|
|
|
type DummyDialector struct{}
|
|
|
|
func (DummyDialector) Name() string {
|
|
return "dummy"
|
|
}
|
|
|
|
func (DummyDialector) Initialize(*gorm.DB) error {
|
|
return nil
|
|
}
|
|
|
|
func (DummyDialector) DefaultValueOf(field *schema.Field) clause.Expression {
|
|
return clause.Expr{SQL: "DEFAULT"}
|
|
}
|
|
|
|
func (DummyDialector) Migrator(*gorm.DB) gorm.Migrator {
|
|
return nil
|
|
}
|
|
|
|
func (DummyDialector) BindVarTo(writer clause.Writer, stmt *gorm.Statement, v interface{}) {
|
|
writer.WriteByte('?')
|
|
}
|
|
|
|
func (DummyDialector) QuoteTo(writer clause.Writer, str string) {
|
|
var (
|
|
underQuoted, selfQuoted bool
|
|
continuousBacktick int8
|
|
shiftDelimiter int8
|
|
)
|
|
|
|
for _, v := range []byte(str) {
|
|
switch v {
|
|
case '`':
|
|
continuousBacktick++
|
|
if continuousBacktick == 2 {
|
|
writer.WriteString("``")
|
|
continuousBacktick = 0
|
|
}
|
|
case '.':
|
|
if continuousBacktick > 0 || !selfQuoted {
|
|
shiftDelimiter = 0
|
|
underQuoted = false
|
|
continuousBacktick = 0
|
|
writer.WriteString("`")
|
|
}
|
|
writer.WriteByte(v)
|
|
continue
|
|
default:
|
|
if shiftDelimiter-continuousBacktick <= 0 && !underQuoted {
|
|
writer.WriteByte('`')
|
|
underQuoted = true
|
|
if selfQuoted = continuousBacktick > 0; selfQuoted {
|
|
continuousBacktick -= 1
|
|
}
|
|
}
|
|
|
|
for ; continuousBacktick > 0; continuousBacktick -= 1 {
|
|
writer.WriteString("``")
|
|
}
|
|
|
|
writer.WriteByte(v)
|
|
}
|
|
shiftDelimiter++
|
|
}
|
|
|
|
if continuousBacktick > 0 && !selfQuoted {
|
|
writer.WriteString("``")
|
|
}
|
|
writer.WriteString("`")
|
|
}
|
|
|
|
func (DummyDialector) Explain(sql string, vars ...interface{}) string {
|
|
return logger.ExplainSQL(sql, nil, `"`, vars...)
|
|
}
|
|
|
|
func (DummyDialector) DataTypeOf(*schema.Field) string {
|
|
return ""
|
|
}
|