diff --git a/src/anonimongo/core/bson.nim b/src/anonimongo/core/bson.nim index e8b1a0c..7067173 100644 --- a/src/anonimongo/core/bson.nim +++ b/src/anonimongo/core/bson.nim @@ -1011,11 +1011,11 @@ proc decode*(strbytes: string): BsonDocument = encoded: true ) -proc newBson*(table: varargs[(string, BsonBase)]): BsonDocument = +proc newBson*(first: (string, BsonBase), table: varargs[(string, BsonBase)]): BsonDocument = var tableres = newOrderedTable[string, BsonBase]() ## Overload newBson with table definition only and stream default to ## StringStream. In most case, use `bson macro<#bson.m,untyped>`_. - for t in table: + for t in @[first] & table.toSeq: tableres[t[0]] = t[1] BsonDocument( table: tableres, @@ -1081,4 +1081,4 @@ converter ofTimestamp*(b: BsonBase): TimestampInternal = bsonFetcher(b, bkTimestamp, BsonTimestamp, TimestampInternal) template bson*(): untyped = bson({}) - ## Convenience for empty bson. \ No newline at end of file + ## Convenience for empty bson. diff --git a/src/anonimongo/core/macroto_v2.nim b/src/anonimongo/core/macroto_v2.nim index 20edf78..b5e64d0 100644 --- a/src/anonimongo/core/macroto_v2.nim +++ b/src/anonimongo/core/macroto_v2.nim @@ -575,6 +575,10 @@ proc assignObj(info: NodeInfo): NimNode = else: immediateParent bodyif.add quote do: var `resvar`: `parentSym` + elif targetSym.kind == nnkPostfix: + let target = targetSym[1] + bodyif.add quote do: + var `resvar`: `target` else: bodyif.add quote do: var `resvar`: `targetSym` diff --git a/src/anonimongo/core/types.nim b/src/anonimongo/core/types.nim index 62d20c0..745a26a 100644 --- a/src/anonimongo/core/types.nim +++ b/src/anonimongo/core/types.nim @@ -303,12 +303,11 @@ proc newMongo*[S: Multisock](muri: MongoUri, poolconn = poolconn, dnsserver = "8 template raiseInvalidSep: untyped = raise newException(MongoError, &"Whether invalid URI {uri} or missing trailing '/'") - + type URLUri = uri.Uri let uri = muri.string if uri.count('/') < 3: raiseInvalidSep() let uriobj = parseUri uri - type URLUri = Uri var uris: seq[URLUri] if uriobj.scheme == "": raise newException(MongoError, &"No scheme protocol provided at \"{uri}\" uri") @@ -328,7 +327,7 @@ proc newMongo*[S: Multisock](muri: MongoUri, poolconn = poolconn, dnsserver = "8 raise newException(MongoError, errmsg) for i, ans in resp.answers: let srvrec = ans as SRVRecord - uris[i] = Uri( + uris[i] = URLUri( scheme: "mongodb", hostname: srvrec.target, port: $srvrec.port, @@ -367,7 +366,7 @@ proc newMongo*[S: Multisock](muri: MongoUri, poolconn = poolconn, dnsserver = "8 if hdom.len > 1: port = hdom[1] hostname = hdom[0] - uris[i] = Uri( + uris[i] = URLUri( scheme: scheme, hostname: hostname, port: port, @@ -600,4 +599,4 @@ proc toCursor*[S: MultiSock](b: BsonDocument): Cursor[S] = firstBatch: if "firstBatch" in b: b["firstBatch"].ofArray.map(ofEmbedded) else: @[], nextBatch: if "nextBatch" in b: b["nextBatch"].ofArray.map(ofEmbedded) else: @[], ns: b["ns"], - ) \ No newline at end of file + )