Example #1
0
def create_indexes():
    client = get_mongo_meta_client()
    client.indexdb[get_index_collection_name(User, 'email')].ensure_index(
        "value", unique=True)
    client.indexdb[get_index_collection_name(Article,
                                             'link')].ensure_index("value",
                                                                   unique=True)
    client.indexdb[get_index_collection_name(Company,
                                             'name')].ensure_index("value",
                                                                   unique=True)
    client.indexdb[get_index_collection_name(
        UserBucket, 'user_id')].ensure_index("value", unique=True)
Example #2
0
def delete(obj):
    for attr in obj.__indexed_attrs__:
        value = getattr(obj, attr)
        if value is not None:
            collection_name = get_index_collection_name(obj.__class__, attr)
            client = mongo_meta_client
            db = client['indexdb']
            db[collection_name].remove({'_id': obj.id})
Example #3
0
def get_all(cls, attr, value, is_list=False):
    client = mongo_meta_client
    collection_name = get_index_collection_name(cls, attr)
    db = client['indexdb']

    if is_list:
        db_entities = db[collection_name].find({"value": {"$in": [value]}})
    else:
        db_entities = db[collection_name].find({"value": value})

    return [data_api.get(cls, db_entity['_id']) for db_entity in db_entities]
Example #4
0
def get_one(cls, attr, value, is_list=False, projection=None):
    client = mongo_meta_client
    collection_name = get_index_collection_name(cls, attr)
    db = client['indexdb']

    if is_list:
        db_entity = db[collection_name].find_one({"value": {"$in": [value]}})
    else:
        db_entity = db[collection_name].find_one({"value": value})

    if db_entity is None:
        return None

    return data_api.get(cls, db_entity['_id'], projection=projection)
Example #5
0
def add(obj):
    for attr in obj.__indexed_attrs__:
        value = getattr(obj, attr)
        if value is not None:
            collection_name = get_index_collection_name(obj.__class__, attr)
            client = mongo_meta_client
            db = client.indexdb
            if type(value) is list:
                db[collection_name].update(
                    {'_id': obj.id},
                    {'$addToSet': {
                        "value": {
                            "$each": value
                        }
                    }},
                    upsert=True)
            else:
                db[collection_name].update({'_id': obj.id},
                                           {'$set': {
                                               "value": value
                                           }},
                                           upsert=True)