#!/usr/bin/env python
"""
Find at least one record that occurred after a given date.
"""
from datetime import datetime, timedelta
import os, sys
import pymongo

def usage():
    x = {'program' : os.path.basename(sys.argv[0])}
    print "usage: %(program)s {database} {user:password} {collection} {field} {age-in-days}" % x
    print "  -- if no user:password is needed, use ':' "
    sys.exit(2)

def say(msg):
    sys.stdout.write(msg)
    sys.stdout.write("\n")

def error(msg):
    sys.stderr.write("ERROR: ")
    sys.stderr.write(msg)
    sys.stderr.write("\n")

def run(args=None):
    try:
        i = 0
        if args is None:
           args = sys.argv[1:]
        db_name, db_auth, coll_name, dt_field, age_str = args
	age = int(age_str)
        try:
            db_user, db_pw = db_auth.split(':')
        except ValueError:
            error("Bad value for {user:password}")
            usage()
    except (IndexError, ValueError), err:
        usage()
    conn = pymongo.Connection(host='localhost')
    db = conn[db_name]
    if db_user and db_pw:
        db.authenticate(db_user, db_pw)
    coll = db[coll_name]
    dt = datetime.now() - timedelta(age)
    result = coll.find_one({dt_field : { '$gt' : dt } })
    if result is None:
        code = 1
        say("No data: db=%s, collection=%s, %s > '%s'" % (db_name, coll_name, dt_field, dt))
    else:
        code = 0
    return code

if __name__ == '__main__':
    try:
        sys.exit(run())
    except Exception, err:
        error(str(err))
        sys.exit(-1) 
