Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --$1 = id_zadania kliknietego (które chcemy przesunąć)
- --$2 - numer zadania na ktore chcemy przesunąć nasze zadanie
- DECLARE
- numer_zadania_1 integer;
- ilosc_zadan_1 integer;
- id_nadzadania_1 integer;
- id_zadania_2 integer;
- ilosc_zadan_2 integer;
- id_nadzadania_2 integer;
- w_ktora_strone boolean;
- BEGIN
- SELECT numer
- INTO numer_zadania_1
- FROM zadania
- WHERE id = $1;
- SELECT id
- INTO id_zadania_2
- FROM zadania
- WHERE numer = $2 AND id_projektu = (SELECT id_projektu FROM zadania WHERE id = $1);
- SELECT id_nadzadania
- INTO id_nadzadania_1
- FROM zadania
- WHERE id = $1;
- SELECT id_nadzadania
- INTO id_nadzadania_2
- FROM zadania
- WHERE id = id_zadania_2;
- if(numer_zadania_1 > $2)
- then
- w_ktora_strone = 0;
- else
- w_ktora_strone = 1;
- end if;
- IF ( id_nadzadania_1 = id_nadzadania_2)
- THEN
- IF w_ktora_strone = false
- THEN
- WITH RECURSIVE cte(id, id_nadzadania) AS (
- SELECT id, id_nadzadania FROM zadania WHERE id = $1
- UNION ALL
- SELECT z.id, z.id_nadzadania
- FROM zadania z
- INNER JOIN cte c ON c.id = z.id_nadzadania
- )
- SELECT count(id)
- INTO ilosc_zadan_1
- FROM cte;
- WITH RECURSIVE cte(id, id_nadzadania) AS (
- SELECT id, id_nadzadania FROM zadania WHERE id = id_zadania_2
- UNION ALL
- SELECT z.id, z.id_nadzadania
- FROM zadania z
- INNER JOIN cte c ON c.id = z.id_nadzadania
- )
- SELECT count(id)
- INTO ilosc_zadan_2
- FROM cte;
- WITH RECURSIVE cte(id, id_nadzadania) AS (
- SELECT id, id_nadzadania FROM zadania WHERE id = $1
- UNION ALL
- SELECT z.id, z.id_nadzadania
- FROM zadania z
- INNER JOIN cte c ON c.id = z.id_nadzadania
- )
- UPDATE zadania
- SET numer = numer - ilosc_zadan_2
- WHERE id IN (SELECT id FROM cte);
- WITH RECURSIVE cte(id, id_nadzadania) AS (
- SELECT id, id_nadzadania FROM zadania WHERE id = id_zadania_2
- UNION ALL
- SELECT z.id, z.id_nadzadania
- FROM zadania z
- INNER JOIN cte c ON c.id = z.id_nadzadania
- )
- UPDATE zadania
- SET numer = numer + ilosc_zadan_1
- WHERE id IN (SELECT id FROM cte);
- ELSE
- WITH RECURSIVE cte(id, id_nadzadania) AS (
- SELECT id, id_nadzadania FROM zadania WHERE id = $1
- UNION ALL
- SELECT z.id, z.id_nadzadania
- FROM zadania z
- INNER JOIN cte c ON c.id = z.id_nadzadania
- )
- SELECT count(id)
- INTO ilosc_zadan_1
- FROM cte;
- WITH RECURSIVE cte(id, id_nadzadania) AS (
- SELECT id, id_nadzadania FROM zadania WHERE id = id_zadania_2
- UNION ALL
- SELECT z.id, z.id_nadzadania
- FROM zadania z
- INNER JOIN cte c ON c.id = z.id_nadzadania
- )
- SELECT count(id)
- INTO ilosc_zadan_2
- FROM cte;
- WITH RECURSIVE cte(id, id_nadzadania) AS (
- SELECT id, id_nadzadania FROM zadania WHERE id = $1
- UNION ALL
- SELECT z.id, z.id_nadzadania
- FROM zadania z
- INNER JOIN cte c ON c.id = z.id_nadzadania
- )
- UPDATE zadania
- SET numer = numer + ilosc_zadan_2
- WHERE id IN (SELECT id FROM cte);
- WITH RECURSIVE cte(id, id_nadzadania) AS (
- SELECT id, id_nadzadania FROM zadania WHERE id = id_zadania_2
- UNION ALL
- SELECT z.id, z.id_nadzadania
- FROM zadania z
- INNER JOIN cte c ON c.id = z.id_nadzadania
- )
- UPDATE zadania
- SET numer = numer - ilosc_zadan_1
- WHERE id IN (SELECT id FROM cte);
- END IF;
- END IF;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement