Пример #1
0
 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
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
    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
Пример #5
0
    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
Пример #6
0
 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
Пример #7
0
    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
Пример #8
0
    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
Пример #9
0
 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