Skip to content

jmarca/couch_check_state

Repository files navigation

Couch Check State

Build Status Code Climate Test Coverage

This is a small package that uses superagent to access "state" stored in CouchDB. What I often do is to use a CouchDB database as a way to store state across machines. For example, I might stash that a detector is being processed, or that a detector has completed a step in its processing.

The basic idea is that a document holds all of the information for a particular detector, but that the detector might have multiple years of processing (or months or whatever). So the structure of the doc might look like:

{
   "_id": "801230",
   "_rev": "99-7ce940b60ed44a6ad07e6b5b21b4cc01",
   "2010": {
   },
   "2009": {
   },
   "2008": {
       "wim_neigbors_ready": {
           "direction": "west",
           "wim_id": 78,
           "distance": 18339
       },
       "vdsdata": "0",
       "occupancy_averaged": 1,
       "wim_neigbors": {
           "direction": "west",
           "wim_id": 78,
           "distance": 18339
       },
       "vdsraw_chain_lengths": [
           11,
           23,
           19,
           22,
           15
       ],
       "vdsimputed": 1,
       "truckimputation_max_iterations": 0,
       "csv_parse_2cdb": {
           "58cc79c6ebc92027a1a23da619932287": {
               "records": 35136,
               "file": "/data/wim/vds_id.801230.truck.imputed.2008.csv"
           },
           "375a3024b7049e75aadb6dddbaddd9fc": {
               "records": 175680,
               "file": "./imputed/vds_id.801230.truck.imputed.2008.csv"
           },
           "437944d40c7396e95a25ad7162ee64fe": {
               "records": 8784,
               "file": "/var/lib/data/imputed/vds_id.801230.truck.imputed.2008.csv"
           },
           "3437fe0a243bcdf6c07a5fc684abbb83": {
               "records": 35136,
               "file": "/data/wim/vds_id.801230.truck.imputed.2008.csv.gz"
           }
       },
       "csv_parse": {
           "58cc79c6ebc92027a1a23da619932287": "/data/wim/vds_id.801230.truck.imputed.2008.csv",
           "records": 35136,
           "437944d40c7396e95a25ad7162ee64fe": "Rwork/imputed/vds_id.801230.truck.imputed.2008.csv"
       },
       "rawdata": "1",
       "row": 1,
       "truckimputation_chain_lengths": [
           75,
           76,
           91,
           83,
           70
       ],
       "truckimputed": "2012-01-31b finished",
       "vdsraw_max_iterations": 0
   },
   ...

In such a case, one might want to know the state of vdsraw_chain_lengths for 2008, say to test whether any are greater than 5, or for 2009, so see if that process has even been run.

This library helps with that. To get 2010's vdsraw_chain_length entry, you would do something like this:

var checker = require('couch_check_state')
checker({'db':'vdsdata%2ftracking'
         ,'doc':vdsid
         ,'year':yr
         ,'state':'vdsraw_chain_lengths'}
         ,function(err,state){
             if(err) throw new Error(err)
             if(state.length<5){
                 do_raw_imputations(vdsid)
             }
             return null;
         })

About

couch check state helper function

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors