From 6bbc33b9e998af7ee45cca86e1290474603dff48 Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Mon, 12 Aug 2024 15:42:56 -0300 Subject: Build with "go tool" and hackishly bundle code from same package into one file each --- sqlite3_type.go | 108 -------------------------------------------------------- 1 file changed, 108 deletions(-) delete mode 100644 sqlite3_type.go (limited to 'sqlite3_type.go') 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 . -// 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 -#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 -} -- cgit v1.2.3