classfantorepo::MongoUtils

sys::Obj
  fantorepo::MongoUtils

MongoUtils Addons and utility methods for dealing with mongo - stuff that FanLink doesn't do

atomicInc

static Void atomicInc(DB db, Type mongoDocType, Field counterField, Str:Obj? filter, Int incBy := 1)

Do an atomic increment/decrement on a field It's a bit of a hack, but we can't simply use a fanlink object since we would have to have a $inc named field, which is an illegal field name ... so just building that by hand.

Note that incBy can be negative for doing an atomic decrease.

doc

static Str:Obj? doc(Str name, Obj? val)

Just syntax sugar for manually creating mongo docs

mongoDocName

static Str mongoDocName(Type type)

Using same naming convention as fanlink

recentPods

static List recentPods(DB db, Int nbItems := 5)

Most recenty updated public pods Because we bypass fanlink we get a plain list as the result

remove

static Void remove(DB db, Type type, Str:Obj? filter)

remove an item from the db

runFanrQuery

static PodSpec[] runFanrQuery(DB db, Query q, Int numVersions)

Take a standard fan query and build a mongo query object from it This should be much faster than fetching all and filtering locally as done by query.include

right now it's not very optimized, much of the filtering is done here rather tha building the exact mongo query to get what we need ... but that's would be lots of work and version would be tricky.

searchPods

static List searchPods(DB db, Str query)

Search pod names and summary (can use patterns) Because we bypass fanlink we get a plain list as the result

topPods

static List topPods(DB db, Int nbItems := 5)

Most doenloade public pods Because we bypass fanlink we get a plain list as the result