Commit 89de6f1d authored by Cristiano Urban's avatar Cristiano Urban
Browse files

Added 'nodeExists()', 'updateGroupRead()' and 'updateGroupWrite()' methods.

parent 18d68208
Loading
Loading
Loading
Loading
+53 −1
Original line number Diff line number Diff line
@@ -51,6 +51,22 @@ class DbConnector(object):

    ##### Node #####
    
    def nodeExists(self, vospacePath):
        """Checks if a VOSpace node already exists. Returns a boolean."""
        with self.getConnection() as conn:
            try:
                cursor = conn.cursor(cursor_factory = RealDictCursor)
                cursor.execute("SELECT * FROM node_vos_path WHERE vos_path = %s;", (vospacePath,))
                result = cursor.fetchall()
            except Exception as e:
                if not conn.closed:
                    conn.rollback()
                print(e)
        if result:
            return True
        else:
            return False

    def getOSPath(self, vospacePath):
        """Returns a list containing full path, storage type and username for a VOSpace path."""
        with self.getConnection() as conn:
@@ -705,6 +721,42 @@ class DbConnector(object):
                if not conn.closed:
                    conn.rollback()
                    
    def updateGroupRead(self, groupsToAdd, groupsToRemove, nodeVOSPath):
        with self.getConnection() as conn:
            try:
                cursor = conn.cursor(cursor_factory = RealDictCursor)
                cursor.execute("""
                    UPDATE node c
                    SET group_read = update_array(c.group_read, %s::VARCHAR[], %s::VARCHAR[])
                    FROM node n
                    WHERE c.path <@ n.path AND n.node_id = id_from_vos_path(%s);
                    """,
                    (groupsToAdd,
                     groupsToRemove,
                     nodeVOSPath,))
                conn.commit()
            except Exception as e:
                if not conn.closed:
                    conn.rollback()
                    
    def updateGroupWrite(self, groupsToAdd, groupsToRemove, nodeVOSPath):
        with self.getConnection() as conn:
            try:
                cursor = conn.cursor(cursor_factory = RealDictCursor)
                cursor.execute("""
                    UPDATE node c
                    SET group_write = update_array(c.group_write, %s::VARCHAR[], %s::VARCHAR[])
                    FROM node n
                    WHERE c.path <@ n.path AND n.node_id = id_from_vos_path(%s);
                    """,
                    (groupsToAdd,
                     groupsToRemove,
                     nodeVOSPath,))
                conn.commit()
            except Exception as e:
                if not conn.closed:
                    conn.rollback()

    ##### Storage #####

    def insertStorage(self, storageType, basePath, baseUrl, hostname):