def get(self, collection_name): client = pymongo.MongoClient(app.config['mongo_connection_string']) db = client[app.config['mongo_db']] if collection_name not in db.list_collection_names(): return f"Collection '{collection_name}' not found" else: collection = db[collection_name] data = { "collection_name": collection_name, "docs_count": collection.count() } with iris_connection() as iris: data['iris_root_nodes_count'] = iris.count_root_nodes( collection_name) if collection.count() > 0: first_doc = collection.find_one() if '_id' in first_doc: first_doc['_id'] = str(first_doc['_id']) data['first_doc'] = json.dumps(first_doc, indent=2, cls=DateTimeEncoder) if data['iris_root_nodes_count'] > 0: data['iris_data'] = parse_dict(first_doc) return data
def post(self): post_parser = reqparse.RequestParser() post_parser.add_argument('name') post_parser.add_argument('node') args = post_parser.parse_args() with iris_connection() as iris: iris_root_nodes_count = iris.count_root_nodes(args.name) data = {"status": True, "data": iris_root_nodes_count} return data
def json_to_iris(input_data: str, global_name: str) -> tuple: data, status = validate_json(input_data) if not status: return False, None else: with iris_connection() as iris: iris_comp_data = parse_dict(data) for item in iris_comp_data: path_list = item['path_list'] iris.set(item['value'], global_name, *path_list) return True, iris_comp_data
def post(self): post_parser = reqparse.RequestParser() post_parser.add_argument('collection_name') args = post_parser.parse_args() _, iris_data = mongo_to_iris(args.collection_name) data = { "result": args.collection_name, "iris_data": iris_data, } with iris_connection() as iris: data['iris_root_nodes_count'] = iris.count_root_nodes( args.collection_name) return data
def mongo_to_iris(collection_name: str): client = pymongo.MongoClient(current_app.config['mongo_connection_string']) db = client[current_app.config['mongo_db']] if collection_name not in db.list_collection_names(): return False, None collection = db[collection_name] cursor = collection.find({}) i = 0 iris_first_node = [] with iris_connection() as iris: for document in cursor: document['_id'] = str(document['_id']) iris_comp_data = parse_dict(document) if i == 0: iris_first_node = iris_comp_data for item in iris_comp_data: path_list = [i] + item['path_list'] iris.set(item['value'], collection_name, *path_list) i += 1 return True, iris_first_node
def kill_iris_global(root_item): with iris_connection() as iris: iris.kill(root_item) return 1