All pastes #2054180 Raw Edit

Someone

public sql v1 · immutable
#2054180 ·published 2011-05-05 11:48 UTC
rendered paste body
CREATE PROCEDURE addAdministrable (parent INT, role INT, OUT aid INT)BEGIN    DECLARE done INT DEFAULT 0;    DECLARE ancestor INT;    DECLARE thisId INT;    DECLARE cur CURSOR FOR SELECT ancestor_id FROM administrables_administrables WHERE descendant_id = parent;    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;    INSERT INTO administrables (role_id) VALUES (role);    OPEN cur;      SET thisId = LAST_INSERT_ID();    read_loop: LOOP        FETCH cur INTO ancestor;        IF done THEN            LEAVE read_loop;        END IF;        REPLACE INTO administrables_administrables (ancestor_id, descendant_id) VALUES (ancestor, thisId);    END LOOP;    CLOSE cur;    REPLACE INTO administrables_administrables (ancestor_id, descendant_id) VALUES (parent, thisId);    SET aid = thisId;END;CREATE TRIGGER rolesadd BEFORE INSERT ON rolesFOR EACH ROW BEGIN    DECLARE theId INT;    DECLARE allRoles INT;    SELECT administrables.id FROM administrables JOIN roles ON roles.name='Alla Roller' AND roles.administrable_id = administrables.id INTO allRoles;    CALL addAdministrable(allRoles, NULL, theId);    SET NEW.administrable_id = theId;END;CREATE TRIGGER useradd BEFORE INSERT ON usersFOR EACH ROW BEGIN    DECLARE theId INT;    DECLARE allUsers INT;    SELECT administrables.id FROM administrables JOIN users ON first_name='Alla' AND last_name='Användare' AND users.administrable_id = administrables.id INTO allUsers;    CALL addAdministrable(allUsers, NULL, theId);    SET NEW.administrable_id = theId;END;CREATE PROCEDURE assign_action (role_name VARCHAR(40), action_name VARCHAR(40))INSERT INTO actions_roles(role_id, action_id) VALUES ((SELECT id FROM roles WHERE name=role_name),(SELECT id FROM actions WHERE name=action_name));CREATE PROCEDURE assign_role_facility (uname VARCHAR(40), role_name VARCHAR(40), facility_name VARCHAR(80))INSERT INTO administrables_roles_users (user_id, role_id, administrable_id) VALUES ((SELECT id FROM users WHERE username=uname),(SELECT id FROM roles WHERE name=role_name),(SELECT administrable_id FROM facilities WHERE name=facility_name));CREATE PROCEDURE assign_role_equipment (uname VARCHAR(40), role_name VARCHAR(40), equipment_name VARCHAR(80))INSERT INTO administrables_roles_users (user_id, role_id, administrable_id) VALUES ((SELECT id FROM users WHERE username=uname),(SELECT id FROM roles WHERE name=role_name),(SELECT bookables.administrable_id FROM equipment JOIN bookables ON equipment.bookable=bookables.id WHERE equipment.name=equipment_name));CREATE PROCEDURE assign_role_room (uname VARCHAR(40), role_name VARCHAR(40), room_name VARCHAR(80))INSERT INTO administrables_roles_users (user_id, role_id, administrable_id) VALUES ((SELECT id FROM users WHERE username=uname),(SELECT id FROM roles WHERE name=role_name),(SELECT bookables.administrable_id FROM rooms JOIN bookables ON rooms.bookable=bookables.id WHERE rooms.name=room_name));CREATE PROCEDURE assign_role_user (uname VARCHAR(40), role_name VARCHAR(40), uname2 VARCHAR(80))INSERT INTO administrables_roles_users (user_id, role_id, administrable_id) VALUES ((SELECT id FROM users WHERE username=uname),(SELECT id FROM roles WHERE name=role_name),(SELECT administrable_id FROM users WHERE username=uname2));