-- :name create-profile :<! :1 insert into users (id, fullname, username, email, password, metadata, photo) values (:id, :fullname, :username, :email, :password, :metadata, '') returning *; -- :name get-profile :? :1 select * from users where id = :id and deleted_at is null; -- :name get-profile-by-username :? :1 select * from users where (username = :username or email = :username) and deleted_at is null; -- :name user-with-username-exists? select exists (select * from users where username = :username --~ (when (:id params) "and id != :id") ) as val; -- :name user-with-email-exists? select exists (select * from users where email = :email --~ (when (:id params) "and id != :id") ) as val; -- :name update-profile :<! :1 update users set username = :username, email = :email, fullname = :fullname, metadata = :metadata where id = :id and deleted_at is null returning *; -- :name update-profile-password :! :n update users set password = :password where id = :id and deleted_at is null -- :name update-profile-photo :! :n update users set photo = :photo where id = :id and deleted_at is null -- :name create-recovery-token :! :n insert into user_pswd_recovery ("user", token) values (:user, :token); -- :name get-recovery-token select * from user_pswd_recovery where used_at is null and token = :token; -- :name recovery-token-exists? :? :1 select exists (select * from user_pswd_recovery where used_at is null and token = :token) as token_exists; -- :name mark-recovery-token-used :! :n update user_pswd_recovery set used_at = clock_timestamp() where token = :token;