diff --git a/.gitignore b/.gitignore index a14a89e..f7621f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ *.sw? nimcache/ +nimble.develop +nimble.paths diff --git a/fiber_orm.nimble b/fiber_orm.nimble index 9d04ca5..d383787 100644 --- a/fiber_orm.nimble +++ b/fiber_orm.nimble @@ -1,6 +1,6 @@ # Package -version = "3.1.1" +version = "3.2.0" author = "Jonathan Bernard" description = "Lightweight Postgres ORM for Nim." license = "GPL-3.0" @@ -11,4 +11,4 @@ srcDir = "src" # Dependencies requires @["nim >= 1.4.0", "uuids"] -requires "namespaced_logging >= 1.0.0" +requires "namespaced_logging >= 2.0.2" diff --git a/src/fiber_orm.nim b/src/fiber_orm.nim index a3f936a..33e53eb 100644 --- a/src/fiber_orm.nim +++ b/src/fiber_orm.nim @@ -302,25 +302,30 @@ type records*: seq[T] totalRecords*: int - DbUpdateError* = object of CatchableError ##\ + DbUpdateError* = object of CatchableError ## Error types raised when a DB modification fails. - NotFoundError* = object of CatchableError ##\ + NotFoundError* = object of CatchableError ## Error type raised when no record matches a given ID -var logService {.threadvar.}: Option[LogService] +var logService {.threadvar.}: Option[ThreadLocalLogService] var logger {.threadvar.}: Option[Logger] +proc makeQueryLogEntry( + m: string, + sql: string, + args: openArray[(string, string)] = []): JsonNode = + result = %*{ "method": m, "sql": sql } + for (k, v) in args: result[k] = %v + proc logQuery*(methodName: string, sqlStmt: string, args: openArray[(string, string)] = []) = # namespaced_logging would do this check for us, but we don't want to even # build the log object if we're not actually logging if logService.isNone: return if logger.isNone: logger = logService.getLogger("fiber_orm/query") - var log = %*{ "method": methodName, "sql": sqlStmt } - for (k, v) in args: log[k] = %v - logger.debug(log) + logger.debug(makeQueryLogEntry(methodName, sqlStmt, args)) -proc enableDbLogging*(svc: LogService) = +proc enableDbLogging*(svc: ThreadLocalLogService) = logService = some(svc) proc newMutateClauses(): MutateClauses = diff --git a/src/fiber_orm/pool.nim b/src/fiber_orm/pool.nim index 15a82e7..ed4e1c4 100644 --- a/src/fiber_orm/pool.nim +++ b/src/fiber_orm/pool.nim @@ -4,7 +4,7 @@ ## Simple database connection pooling implementation compatible with Fiber ORM. -import std/[sequtils, strutils, sugar] +import std/[sequtils, sugar] import db_connector/db_common from db_connector/db_sqlite import getRow, close