aboutsummaryrefslogtreecommitdiff
path: root/sqlite3_type.go
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-08-12 15:42:56 -0300
committerEuAndreh <eu@euandre.org>2024-08-12 15:52:16 -0300
commit6bbc33b9e998af7ee45cca86e1290474603dff48 (patch)
tree5d0aff47783bc20dcf3f7862afdba0445e4c2fae /sqlite3_type.go
parentAdd Makefile and build skeleton (diff)
downloadgolite-6bbc33b9e998af7ee45cca86e1290474603dff48.tar.gz
golite-6bbc33b9e998af7ee45cca86e1290474603dff48.tar.xz
Build with "go tool" and hackishly bundle code from same package into one file each
Diffstat (limited to 'sqlite3_type.go')
-rw-r--r--sqlite3_type.go108
1 files changed, 0 insertions, 108 deletions
diff --git a/sqlite3_type.go b/sqlite3_type.go
deleted file mode 100644
index 20537a0..0000000
--- a/sqlite3_type.go
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright (C) 2019 Yasuhiro Matsumoto <mattn.jp@gmail.com>.
-// Use of this source code is governed by an MIT-style
-// license that can be found in the LICENSE file.
-
-package sqlite3
-
-/*
-#ifndef USE_LIBSQLITE3
-#include "sqlite3-binding.h"
-#else
-#include <sqlite3.h>
-#endif
-*/
-import "C"
-import (
- "database/sql"
- "reflect"
- "strings"
-)
-
-// ColumnTypeDatabaseTypeName implement RowsColumnTypeDatabaseTypeName.
-func (rc *SQLiteRows) ColumnTypeDatabaseTypeName(i int) string {
- return C.GoString(C.sqlite3_column_decltype(rc.s.s, C.int(i)))
-}
-
-/*
-func (rc *SQLiteRows) ColumnTypeLength(index int) (length int64, ok bool) {
- return 0, false
-}
-
-func (rc *SQLiteRows) ColumnTypePrecisionScale(index int) (precision, scale int64, ok bool) {
- return 0, 0, false
-}
-*/
-
-// ColumnTypeNullable implement RowsColumnTypeNullable.
-func (rc *SQLiteRows) ColumnTypeNullable(i int) (nullable, ok bool) {
- return true, true
-}
-
-// ColumnTypeScanType implement RowsColumnTypeScanType.
-func (rc *SQLiteRows) ColumnTypeScanType(i int) reflect.Type {
- //ct := C.sqlite3_column_type(rc.s.s, C.int(i)) // Always returns 5
- return scanType(C.GoString(C.sqlite3_column_decltype(rc.s.s, C.int(i))))
-}
-
-const (
- SQLITE_INTEGER = iota
- SQLITE_TEXT
- SQLITE_BLOB
- SQLITE_REAL
- SQLITE_NUMERIC
- SQLITE_TIME
- SQLITE_BOOL
- SQLITE_NULL
-)
-
-func scanType(cdt string) reflect.Type {
- t := strings.ToUpper(cdt)
- i := databaseTypeConvSqlite(t)
- switch i {
- case SQLITE_INTEGER:
- return reflect.TypeOf(sql.NullInt64{})
- case SQLITE_TEXT:
- return reflect.TypeOf(sql.NullString{})
- case SQLITE_BLOB:
- return reflect.TypeOf(sql.RawBytes{})
- case SQLITE_REAL:
- return reflect.TypeOf(sql.NullFloat64{})
- case SQLITE_NUMERIC:
- return reflect.TypeOf(sql.NullFloat64{})
- case SQLITE_BOOL:
- return reflect.TypeOf(sql.NullBool{})
- case SQLITE_TIME:
- return reflect.TypeOf(sql.NullTime{})
- }
- return reflect.TypeOf(new(any))
-}
-
-func databaseTypeConvSqlite(t string) int {
- if strings.Contains(t, "INT") {
- return SQLITE_INTEGER
- }
- if t == "CLOB" || t == "TEXT" ||
- strings.Contains(t, "CHAR") {
- return SQLITE_TEXT
- }
- if t == "BLOB" {
- return SQLITE_BLOB
- }
- if t == "REAL" || t == "FLOAT" ||
- strings.Contains(t, "DOUBLE") {
- return SQLITE_REAL
- }
- if t == "DATE" || t == "DATETIME" ||
- t == "TIMESTAMP" {
- return SQLITE_TIME
- }
- if t == "NUMERIC" ||
- strings.Contains(t, "DECIMAL") {
- return SQLITE_NUMERIC
- }
- if t == "BOOLEAN" {
- return SQLITE_BOOL
- }
-
- return SQLITE_NULL
-}