Guest User

Untitled

a guest
Jun 12th, 2018
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. CREATE FUNCTION public.sync_user(IN users "user_sync"[])
  2. RETURNS void
  3. LANGUAGE 'plpgsql'
  4.  
  5. AS $BODY$
  6. BEGIN
  7.  
  8. DROP TABLE IF EXISTS user_array;
  9.  
  10. CREATE TEMP TABLE user_array
  11. (
  12. username character varying(250),
  13. password character varying(250),
  14. first_name character varying(250),
  15. last_name character varying(250),
  16. email character varying(250),
  17. phone character varying(250),
  18. avatar character varying(250)
  19. );
  20.  
  21. FOR Counter in array_lower(users, 1) .. array_upper(users, 1)
  22. LOOP
  23. INSERT INTO user_array (username, password, first_name, last_name, email, phone, avatar)
  24. VALUES(users[Counter].username, users[Counter].password, users[Counter].first_name, users[Counter].last_name, users[Counter].email, users[Counter].phone, users[Counter].avatar);
  25. END LOOP;
  26.  
  27. UPDATE user_
  28. SET
  29. status = 0,
  30. updated_date = CURRENT_TIMESTAMP
  31. WHERE user_.username IN (
  32. SELECT u.username FROM user_ u
  33. LEFT JOIN user_array u2 ON u.username = u2.username
  34. WHERE u2.username IS NULL
  35. );
  36.  
  37. INSERT INTO user_ (id, username, password, first_name, last_name, email, phone, avatar, status, updated_date)
  38. SELECT nextval('user_seq'), u2.username, u2.password, u2.first_name, u2.last_name, u2.email, u2.phone, u2.avatar, 1, CURRENT_TIMESTAMP
  39. FROM user_array u2
  40. LEFT JOIN user_ u ON u.username = u2.username
  41. WHERE u.username IS NULL
  42. ;
  43.  
  44. UPDATE user_ u
  45. SET
  46. password = u2.password,
  47. first_name = u2.first_name,
  48. last_name = u2.last_name,
  49. email = u2.email,
  50. phone = u2.phone,
  51. avatar = u2.avatar,
  52. status = 1,
  53. updated_date = CURRENT_TIMESTAMP
  54. FROM user_array u2
  55. WHERE u.username = u2.username;
  56.  
  57. RETURN ;
  58. END;
  59. $BODY$;
  60.  
  61. ALTER FUNCTION public.sync_user("user_sync"[]) OWNER TO postgres;
Add Comment
Please, Sign In to add comment