INSERT INTO device_group_relation (group_id, device_id, role, status, priority, connection_order, created_at, updated_at, created_by, updated_by) SELECT #{groupId} as group_id, device_id, CASE WHEN #{deviceRole} = 'CONTROLLER' THEN 1 WHEN #{deviceRole} = 'COLLABORATOR' THEN 2 WHEN #{deviceRole} = 'MONITOR' THEN 3 ELSE 2 END as role, 1 as status, 5 as priority, ROW_NUMBER() OVER (ORDER BY device_id) as connection_order, NOW() as created_at, NOW() as updated_at, 'system' as created_by, 'system' as updated_by FROM ( SELECT #{deviceId} as device_id ) t WHERE NOT EXISTS ( SELECT 1 FROM device_group_relation WHERE group_id = #{groupId} AND device_id = device_id AND is_deleted = 0 ) UPDATE device_group_relation SET is_deleted = 1, updated_at = NOW(), updated_by = 'system' WHERE group_id = #{groupId} AND device_id IN #{deviceId} AND is_deleted = 0 UPDATE device_group_relation SET role = CASE WHEN #{deviceRole} = 'CONTROLLER' THEN 1 WHEN #{deviceRole} = 'COLLABORATOR' THEN 2 WHEN #{deviceRole} = 'MONITOR' THEN 3 ELSE 2 END, updated_at = NOW(), updated_by = 'system' WHERE group_id = #{groupId} AND device_id = #{deviceId} AND is_deleted = 0 UPDATE device_group_relation SET is_deleted = 1, updated_at = NOW(), updated_by = 'system' WHERE group_id = #{groupId} AND device_id = #{deviceId} AND is_deleted = 0