def set(key_type, id, value, expiration=None): db = get_db() key = format_key(key_type, id) if expiration is not None: db.setex(key, expiration, value) db.set(key, value) console("set", "{} {}".format(key, value))
def save(model): db = get_db() key = format_key(model.model_name, model.id) pipe = db.pipeline() pipe.hmset(key, model._modified) log = "{} {}".format(key, model._modified) for set_field in model.model_sets: set_key = format_key(key, set_field) old_set = db.smembers(set_key) new_set = model.__dict__[set_field] add = new_set.difference(old_set) remove = old_set.difference(new_set) for item in add: pipe.sadd(set_key, item) for item in remove: pipe.srem(set_key, item) if add: log += "\n {} += {}".format(set_key, add) if remove: log += "\n {} -= {}".format(set_key, remove) pipe.execute() console("save", log)
def delete(model, id): db = get_db() key = format_key(model, id) db.delete(key) console("delete", "{}".format(key))