src/anonimongo/core/utils

Source   Edit  

Procs

proc addWriteConcern(q: var BsonDocument; db: Database; wt: BsonBase)
Helper that will modify add writeConcern to BsonDocument query based on writeConcer data given. If it's nil and Mongo.writeConcern also nil, bypass without adding this field in query. Source   Edit  
func cmd(name: string): string {....raises: [], tags: [], forbids: [].}
Add suffix ".$cmd" to Database name to avoid any typo. Source   Edit  
proc crudops(db: Database[AsyncSocket]; q: BsonDocument; dbname = "";
             cmd = ckRead): Future[BsonDocument] {....gcsafe, stackTrace: false,
    raises: [Exception, ValueError],
    tags: [RootEffect, TimeEffect, WriteIOEffect, ReadIOEffect], forbids: [].}
About the same as proceed but this will return a BsonDocument compared to proceed that return WriteResult. Source   Edit  
proc crudops(db: Database[Socket]; q: BsonDocument; dbname = ""; cmd = ckRead): BsonDocument {.
    ...gcsafe, raises: [KeyError, ValueError, MongoError, IOError, OSError,
                     Exception, SnappyError, ZippyError, SslError, TimeoutError],
    tags: [WriteIOEffect, ReadIOEffect, RootEffect, TimeEffect], forbids: [].}
About the same as proceed but this will return a BsonDocument compared to proceed that return WriteResult. Source   Edit  
proc epilogueCheck(reply: ReplyFormat; target: var string): bool {.
    ...raises: [KeyError, ValueError, Exception], tags: [RootEffect], forbids: [].}
Helper utility to check and modify string reason if the operation wasn't success. Source   Edit  
func flags(d: Database): int32
Get Mongo available wire.QueryFlags as int32 bitfield Source   Edit  
proc getWResult(b: BsonDocument): WriteResult {.
    ...raises: [KeyError, ValueError, Exception], tags: [RootEffect], forbids: [].}
Helper to fetch a WriteResult of kind wkMany. Source   Edit  
proc proceed(db: Database[AsyncSocket]; q: BsonDocument; dbname = "";
             cmd = ckRead; needCompress = true): Future[WriteResult] {.
    ...stackTrace: false, raises: [Exception, ValueError],
    tags: [RootEffect, TimeEffect, WriteIOEffect, ReadIOEffect], forbids: [].}
Helper utility that basically utilize another two main operations sendops and epilogueCheck. Source   Edit  
proc proceed(db: Database[Socket]; q: BsonDocument; dbname = ""; cmd = ckRead;
             needCompress = true): WriteResult {....raises: [KeyError, ValueError,
    MongoError, IOError, OSError, Exception, SnappyError, ZippyError, SslError,
    TimeoutError], tags: [WriteIOEffect, ReadIOEffect, RootEffect, TimeEffect],
    forbids: [].}
Helper utility that basically utilize another two main operations sendops and epilogueCheck. Source   Edit  
proc sendOps(q: BsonDocument; db: Database[AsyncSocket]; name = "";
             cmd = ckRead; compression = cidNoop): Future[ReplyFormat] {....gcsafe,
    stackTrace: false, raises: [Exception, ValueError],
    tags: [RootEffect, TimeEffect, WriteIOEffect, ReadIOEffect], forbids: [].}
A helper utility which greatly simplify actual Database command queries. Any new command implementation usually use this helper proc. Cmd argument is needed to recognize what kind of command operation to be sent. Source   Edit  
proc sendOps(q: BsonDocument; db: Database[Socket]; name = ""; cmd = ckRead;
             compression = cidNoop): ReplyFormat {....gcsafe, raises: [KeyError,
    ValueError, MongoError, IOError, OSError, Exception, SnappyError,
    ZippyError, SslError, TimeoutError],
    tags: [WriteIOEffect, ReadIOEffect, RootEffect, TimeEffect], forbids: [].}
A helper utility which greatly simplify actual Database command queries. Any new command implementation usually use this helper proc. Cmd argument is needed to recognize what kind of command operation to be sent. Source   Edit  

Templates

template addConditional(q: var BsonDocument; field: string; val: BsonBase)
Add any optional boolean field to query if it's true. Source   Edit  
template addOptional(q: var BsonDocument; name: string; f: BsonBase)
Add any optional field to query if it's not nil. Source   Edit