diff --git a/internal/codegen/golang/sqlite_type.go b/internal/codegen/golang/sqlite_type.go index 505a74740c..bb8fcc0735 100644 --- a/internal/codegen/golang/sqlite_type.go +++ b/internal/codegen/golang/sqlite_type.go @@ -9,16 +9,40 @@ import ( ) func sqliteType(r *compiler.Result, col *compiler.Column, settings config.CombinedSettings) string { - dt := col.DataType + dt := strings.ToLower(col.DataType) notNull := col.NotNull || col.IsArray switch dt { - case "integer": + case "int", "integer", "tinyint", "smallint", "mediumint", "bigint", "unsignedbigint", "int2", "int8", "numeric", "decimal": if notNull { - return "int32" + return "int64" } - return "sql.NullInt32" + return "sql.NullInt64" + + case "blob": + if notNull { + return "[]uint8" + } + return "*[]uint8" + + case "real", "double", "doubleprecision", "float": + if notNull { + return "float64" + } + return "sql.NullFloat64" + + case "boolean": + if notNull { + return "bool" + } + return "sql.NullBool" + + case "date", "datetime", "timestamp": + if notNull { + return "time.Time" + } + return "sql.NullTime" case "any": return "interface{}" @@ -27,7 +51,14 @@ func sqliteType(r *compiler.Result, col *compiler.Column, settings config.Combin switch { - case strings.HasPrefix(dt, "varchar"): + case strings.HasPrefix(dt, "character"), + strings.HasPrefix(dt, "varchar"), + strings.HasPrefix(dt, "varyingcharacter"), + strings.HasPrefix(dt, "nchar"), + strings.HasPrefix(dt, "nativecharacter"), + strings.HasPrefix(dt, "nvarchar"), + dt == "text", + dt == "clob": if notNull { return "string" } diff --git a/internal/endtoend/testdata/select_star/sqlite/go/models.go b/internal/endtoend/testdata/select_star/sqlite/go/models.go index 4c02540e98..977f099b2f 100644 --- a/internal/endtoend/testdata/select_star/sqlite/go/models.go +++ b/internal/endtoend/testdata/select_star/sqlite/go/models.go @@ -7,8 +7,8 @@ import ( ) type User struct { - ID int32 + ID int64 FirstName string LastName sql.NullString - Age int32 + Age int64 }