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