"""Module that provides all database columns and creates geospatial index for col_applications""" from pymongo import MongoClient, GEOSPHERE from ujson import loads with open("config.json", "r", encoding="utf-8") as f: db_config = loads(f.read())["database"] f.close() if db_config["user"] is not None and db_config["password"] is not None: con_string = 'mongodb://{0}:{1}@{2}:{3}/{4}'.format( db_config["user"], db_config["password"], db_config["host"], db_config["port"], db_config["name"] ) else: con_string = 'mongodb://{0}:{1}/{2}'.format( db_config["host"], db_config["port"], db_config["name"] ) db_client = MongoClient(con_string) db = db_client.get_database(name=db_config["name"]) collections = db.list_collection_names() for collection in ["tmp", "bans", "users", "context", "youtube", "spoilers", "messages", "warnings", "applications", "sponsorships"]: if not collection in collections: db.create_collection(collection) col_tmp = db.get_collection("tmp") col_bans = db.get_collection("bans") col_users = db.get_collection("users") col_context = db.get_collection("context") col_youtube = db.get_collection("youtube") col_spoilers = db.get_collection("spoilers") col_messages = db.get_collection("messages") col_warnings = db.get_collection("warnings") col_applications = db.get_collection("applications") col_sponsorships = db.get_collection("sponsorships") col_applications.create_index([("application.3.location", GEOSPHERE)])