def save_download(cls, data): try: database = ArangoCore.get_database() collections = [ ArangoEdge.USER_DOWNLOAD, ArangoVertex.DOWNLOAD, ArangoEdge.DOWNLOAD_DATA ] with database.transaction(write=collections, commit_on_error=False) as transaction: # Add post to graph vertex ArangoCore.add_vertex_to_collection(ArangoVertex.DOWNLOAD, data, transaction) # Add user_download to graph edge ArangoCore.add_user_download_to_collection( ArangoEdge.USER_DOWNLOAD, ArangoVertex.USER, data['user_id'], ArangoVertex.DOWNLOAD, data['id'], transaction) ArangoCore.add_edge_to_collection(ArangoEdge.DOWNLOAD_DATA, ArangoVertex.DOWNLOAD, data['id'], ArangoVertex.DATA, data['data_id'], transaction) transaction.commit() return True except Exception as exception: raise exception
def del_user_channel(cls, channel): try: channel_id = '{0}/{1}'.format('rv_channels', channel) database = ArangoCore.get_database() collections = [ArangoEdge.USER_CHANNEL] with database.transaction(write=collections, commit_on_error=False) as transaction: command = ''' function () {{ // Get database var db = require("internal").db; // Delete all edges relate to content_id db._query("For edge IN rv_user_channels FILTER edge._to == '{0}' REMOVE {{_key: edge._key}} IN rv_user_channels"); return true; }}'''.format(channel_id) transaction.execute(command) transaction.commit() return True except Exception as exception: raise exception
def delete_download_history(cls, data): try: database = ArangoCore.get_database() collections = [ArangoEdge.USER_DOWNLOAD] with database.transaction(write=collections, commit_on_error=False) as transaction: ArangoCore.delete_edge_from_collection( ArangoEdge.USER_DOWNLOAD, data.get('_key'), transaction) transaction.commit() return True except Exception as exception: raise exception
def add_friend(cls, user_friend_data, activity_data): if '_user_cache' in user_friend_data: del user_friend_data['_user_cache'] try: database = ArangoCore.get_database() collections = ArangoEdge.FRIEND with database.transaction(write=collections, commit_on_error=False) as transaction: ArangoCore.add_edge_to_collection( ArangoEdge.FRIEND, ArangoVertex.USER, user_friend_data['user_id'], ArangoVertex.USER, user_friend_data['friend_user_id'], transaction) transaction.commit() except Exception as exception: raise exception
def delete_data(cls, data): try: database = ArangoCore.get_database() collections = [ArangoVertex.DATA, ArangoEdge.USER_DATA] with database.transaction(write=collections, commit_on_error=False) as transaction: data_id = data.get('id') user_id = data.get('user_id') ArangoCore.delete_vertex_from_collection( ArangoVertex.DATA, data_id, transaction) key = '{0}-{1}'.format(user_id, data_id) ArangoCore.delete_edge_from_collection(ArangoEdge.USER_DATA, key, transaction) transaction.commit() return True except Exception as exception: raise exception
def save_post(cls, post_data): try: database = ArangoCore.get_database() collections = POST_COLLECTIONS with database.transaction(write=collections, commit_on_error=False) as transaction: # Add post to graph vertex ArangoCore.add_vertex_to_collection(ArangoVertex.POST, post_data, transaction) # Add user_post to graph edge ArangoCore.add_edge_to_collection(ArangoEdge.USER_POST, ArangoVertex.USER, post_data['user_id'], ArangoVertex.POST, post_data['id'], transaction) transaction.commit() return True except Exception as exception: raise exception
def unfollow_band(cls, user_id, band_data): try: database = ArangoCore.get_database() collections = ACTIVITY_COLLECTIONS collections += [ArangoVertex.BAND, ArangoEdge.USER_FOLLOW] with database.transaction(write=collections, commit_on_error=False) as transaction: # Remove relation between 2 user _key = '{0}-{1}'.format(user_id, band_data['user_id']) ArangoCore.delete_edge_from_collection(ArangoEdge.USER_FOLLOW, _key) # Update band data cls.update_band(band_data['user_id'], band_data['follow_count'], transaction) transaction.commit() except Exception as exception: raise exception
def save_user(cls, user_id, user_data=None, is_new=True): try: user_data = cls.prepare_data_to_save(user_id, user_data, is_new) database = ArangoCore.get_database() collections = [ArangoVertex.USER] with database.transaction(write=collections, commit_on_error=False) as transaction: if is_new: ArangoCore.add_vertex_to_collection( ArangoVertex.USER, user_data, transaction) else: ArangoCore.update_vertex_in_collection( ArangoVertex.USER, user_data, transaction) user_data['_id'] = '{0}/{1}'.format( 'rv_users', user_data['id']) transaction.commit() return True except Exception as exception: raise exception
def save_comment(cls, comment_data): try: database = ArangoCore.get_database() collections = [ArangoVertex.COMMENT] + [ ArangoEdge.POST_COMMENT ] + [ArangoVertex.ACTIVITY] with database.transaction(write=collections, commit_on_error=False) as transaction: # Add post to graph vertex ArangoCore.add_vertex_to_collection(ArangoVertex.COMMENT, comment_data, transaction) # Add user_post to graph edge ArangoCore.add_edge_to_collection(ArangoEdge.POST_COMMENT, ArangoVertex.POST, comment_data['post_id'], ArangoVertex.COMMENT, comment_data['id'], transaction) transaction.commit() return True except Exception as exception: raise exception