import os,sys
import string
from optparse import OptionParser
import glob
import json
from bson import json_util
import pymongo
from pymongo import MongoClient


__version__="1.0"
__status__ = "Dev"



###############################
def main():

        usage = "\n%prog  [options]"
        parser = OptionParser(usage,version="%prog version___")
        parser.add_option("-d","--dbname",action="store",dest="dbname",help="Database")
        parser.add_option("-c","--coll",action="store",dest="coll",help="Collection")
        parser.add_option("-v","--ver",action="store",dest="ver",help="Release version")

        (options,args) = parser.parse_args()
        for key in ([options.dbname, options.coll, options.ver]):
            if not (key):
                parser.print_help()
                sys.exit(0)

        coll = options.coll
        db_name = options.dbname
        ver = options.ver

        if coll in ["c_bco", "c_history", "c_extract"]:
            coll = "%s_v-%s" % (coll, ver)
       
        
        db_obj = {
            "mongodbuser":"%sadmin" % (db_name),
            "mongodbpassword":"%spass" % (db_name),
            "mongodbname":db_name
        }
        if db_name.find("_beta") != -1:
            db_obj = {
                "mongodbuser":"%sadmin" % (db_name),
                "mongodbpassword":"%spass" % (db_name),
                "mongodbname":"%s" % (db_name)
            }


        try:
            client = pymongo.MongoClient('mongodb://localhost:27017',
                username=db_obj["mongodbuser"],
                password=db_obj["mongodbpassword"],
                authSource=db_name,
                authMechanism='SCRAM-SHA-1',
                serverSelectionTimeoutMS=10000
            )
            client.server_info()
            dbh = client[db_name]
            #q = {"uniprot_canonical_ac":"P14210-1"}
            q = {}
            i = 1
            for doc in dbh[coll].find(q):
                out_file = "temp/record.%s.json" % (i)
                with open (out_file, "w") as FW:
                    FW.write("%s\n" % (json.dumps(doc, indent=4, default=json_util.default)))
                i += 1

        except pymongo.errors.ServerSelectionTimeoutError as err:
            print (err)
        except pymongo.errors.OperationFailure as err:
            print (err)



if __name__ == '__main__':
	main()
