Heyho everybody,
I'm very new to the nim language and am playing around a bit with building a web-application with an sqlite database. While doing so I noticed that, when making case statement on a variable of DbColumn.typ.kind, that my case statement 100% of the time hit the case for the DbTypeKind.dbNull enum.
This was while looking at data from a table whose columns were not of the type "null" (see the end of the code-statement below), so seeing the value of the DbTypeKind enum being used was slightly confusing.
So with this code the values I found in DbColum only DbTypeKind.dbNull used(DbColumn retrieved from DbColumns, gained through a usage of DbConn.instantRows):
//some_sql.nim
import json
type DatabaseField* = tuple
column: DbColumn
value: string
proc serialize_field(column_data: DatabaseField): JsonNode =
let column_data_type: DbTypeKind = column_data.column.typ.kind
case column_data_type:
of DbTypeKind.dbUnknown:
echo "1"
return JsonNode(kind: JString, str: column_data.value)
of DbTypeKind.dbSerial:
echo "2"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbNull:
echo "Proclaimed as null data type"
echo "Data: " & column_data.value & "\n"
return JsonNode(kind: JNull)
of DbTypeKind.dbBlob:
echo "4"
return JsonNode(kind: JString, str: column_data.value)
of DbTypeKind.dbFloat:
echo "5"
return JsonNode(kind: JFloat, fnum: parseFloat(column_data.value))
of DbTypeKind.dbBit:
echo "6"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbBool:
echo "7"
return JsonNode(kind: JInt, num: BiggestInt(parseInt(column_data.value)))
of DbTypeKind.dbFixedChar:
echo "8"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbVarchar:
echo "9"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbJson:
echo "10"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbXml:
echo "11"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbInt:
echo "12"
return JsonNode(kind: JInt, num: BiggestInt(parseInt(column_data.value)))
of DbTypeKind.dbUint:
echo "13"
return JsonNode(kind: JInt, num: BiggestInt(parseInt(column_data.value)))
of DbTypeKind.dbDecimal:
echo "14"
return JsonNode(kind: JFloat, fnum: parseFloat(column_data.value))
of DbTypeKind.dbDate:
echo "15"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbTime:
echo "16"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbDatetime:
echo "17"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbTimestamp:
echo "18"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbTimeInterval:
echo "19"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbEnum:
echo "20"
return JsonNode(kind: JNull)
of DbTypeKind.dbSet:
echo "1"
return JsonNode(kind: JNull)
of DbTypeKind.dbArray:
echo "1"
return JsonNode(kind: JNull)
of DbTypeKind.dbComposite:
echo "1"
return JsonNode(kind: JNull)
of DbTypeKind.dbUrl:
echo "1"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbUuid:
echo "1"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbInet:
echo "1"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbMacAddress:
echo "1"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbGeometry:
echo "1"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbPoint:
echo "1"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbLine:
echo "1"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbLseg:
echo "1"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbBox:
echo "1"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbPath:
echo "1"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbPolygon:
echo "1"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbCircle:
echo "1"
return JsonNode(kind: JString, str:column_data.value)
of DbTypeKind.dbUser1:
echo "1"
return JsonNode(kind: JNull)
of DbTypeKind.dbUser2:
echo "1"
return JsonNode(kind: JNull)
of DbTypeKind.dbUser3:
echo "1"
return JsonNode(kind: JNull)
of DbTypeKind.dbUser4:
echo "1"
return JsonNode(kind: JNull)
of DbTypeKind.dbUser5:
echo "1"
return JsonNode(kind: JNull)
//Table_I_looked_at.sql
CREATE TABLE "wikientries_character" (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"player_character" bool NOT NULL,
"alive" bool NOT NULL,
"name" varchar(200) NOT NULL,
"gender" varchar(10) NOT NULL,
"race" varchar(50) NOT NULL,
"title" varchar(200) NULL,
"description" text NULL,
"is_secret" bool NOT NULL,
"current_location_id" integer NULL REFERENCES "wikientries_location" ("id") DEFERRABLE INITIALLY DEFERRED,
"organization_id" integer NULL REFERENCES "wikientries_organization" ("id") DEFERRABLE INITIALLY DEFERRED,
"creation_datetime" datetime NOT NULL,
"update_datetime" datetime NOT NULL,
"campaign_id" integer NOT NULL REFERENCES "wikientries_campaign" ("id") DEFERRABLE INITIALLY DEFERRED)