Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE FUNCTION public.sync_user(IN users "user_sync"[])
- RETURNS void
- LANGUAGE 'plpgsql'
- AS $BODY$
- BEGIN
- DROP TABLE IF EXISTS user_array;
- CREATE TEMP TABLE user_array
- (
- username character varying(250),
- password character varying(250),
- first_name character varying(250),
- last_name character varying(250),
- email character varying(250),
- phone character varying(250),
- avatar character varying(250)
- );
- FOR Counter in array_lower(users, 1) .. array_upper(users, 1)
- LOOP
- INSERT INTO user_array (username, password, first_name, last_name, email, phone, avatar)
- VALUES(users[Counter].username, users[Counter].password, users[Counter].first_name, users[Counter].last_name, users[Counter].email, users[Counter].phone, users[Counter].avatar);
- END LOOP;
- UPDATE user_
- SET
- status = 0,
- updated_date = CURRENT_TIMESTAMP
- WHERE user_.username IN (
- SELECT u.username FROM user_ u
- LEFT JOIN user_array u2 ON u.username = u2.username
- WHERE u2.username IS NULL
- );
- INSERT INTO user_ (id, username, password, first_name, last_name, email, phone, avatar, status, updated_date)
- SELECT nextval('user_seq'), u2.username, u2.password, u2.first_name, u2.last_name, u2.email, u2.phone, u2.avatar, 1, CURRENT_TIMESTAMP
- FROM user_array u2
- LEFT JOIN user_ u ON u.username = u2.username
- WHERE u.username IS NULL
- ;
- UPDATE user_ u
- SET
- password = u2.password,
- first_name = u2.first_name,
- last_name = u2.last_name,
- email = u2.email,
- phone = u2.phone,
- avatar = u2.avatar,
- status = 1,
- updated_date = CURRENT_TIMESTAMP
- FROM user_array u2
- WHERE u.username = u2.username;
- RETURN ;
- END;
- $BODY$;
- ALTER FUNCTION public.sync_user("user_sync"[]) OWNER TO postgres;
Add Comment
Please, Sign In to add comment