Add jet generator support for SQLite

This commit is contained in:
go-jet 2021-10-21 13:21:01 +02:00
parent 3f7efb33eb
commit 51cad22809
8 changed files with 154 additions and 31 deletions

View file

@ -74,7 +74,7 @@ func new{{tableTemplate.TypeName}}(schemaName, tableName, alias string) {{tableT
}
`
var tablePostgreSQLBuilderTemplate = `
var tableSQLBuilderTemplateWithEXCLUDED = `
{{define "column-list" -}}
{{- range $i, $c := . }}
{{- $field := columnField $c}}

View file

@ -267,8 +267,8 @@ func getGoType(column metadata.Column) interface{} {
// toGoType returns model type for column info.
func toGoType(column metadata.Column) interface{} {
switch column.DataType.Name {
case "USER-DEFINED", "enum":
switch strings.ToLower(column.DataType.Name) {
case "user-defined", "enum":
return ""
case "boolean", "bool":
return false
@ -306,10 +306,10 @@ func toGoType(column metadata.Column) interface{} {
return []byte("")
case "text",
"character", "bpchar",
"character varying", "varchar",
"character varying", "varchar", "nvarchar",
"tsvector", "bit", "bit varying", "varbit",
"money", "json", "jsonb",
"xml", "point", "interval", "line", "ARRAY",
"xml", "point", "interval", "line", "array",
"char", "tinytext", "mediumtext", "longtext": // MySQL
return ""
case "real", "float4":

View file

@ -169,8 +169,8 @@ func processTableSQLBuilder(fileTypes, dirPath string,
}
func getTableSQLBuilderTemplate(dialect jet.Dialect) string {
if dialect.Name() == "PostgreSQL" {
return tablePostgreSQLBuilderTemplate
if dialect.Name() == "PostgreSQL" || dialect.Name() == "SQLite" {
return tableSQLBuilderTemplateWithEXCLUDED
}
return tableSQLBuilderTemplate

View file

@ -5,6 +5,7 @@ import (
"github.com/go-jet/jet/v2/generator/metadata"
"github.com/go-jet/jet/v2/internal/utils"
"path"
"strings"
"unicode"
)
@ -137,7 +138,7 @@ func getSqlBuilderColumnType(columnMetaData metadata.Column) string {
return "String"
}
switch columnMetaData.DataType.Name {
switch strings.ToLower(columnMetaData.DataType.Name) {
case "boolean":
return "Bool"
case "smallint", "integer", "bigint",
@ -157,9 +158,9 @@ func getSqlBuilderColumnType(columnMetaData metadata.Column) string {
return "Timez"
case "interval":
return "Interval"
case "USER-DEFINED", "enum", "text", "character", "character varying", "bytea", "uuid",
case "user-defined", "enum", "text", "character", "character varying", "bytea", "uuid",
"tsvector", "bit", "bit varying", "money", "json", "jsonb", "xml", "point", "line", "ARRAY",
"char", "varchar", "binary", "varbinary",
"char", "varchar", "nvarchar", "binary", "varbinary",
"tinyblob", "blob", "mediumblob", "longblob", "tinytext", "mediumtext", "longtext": // MySQL
return "String"
case "real", "numeric", "decimal", "double precision", "float",