-- name: get-user-by-email^ SELECT u.id, u.username, u.email, u.salt, u.hashed_password, u.bio, u.image, u.phone, u.user_type, u.company_name, u.created_at, u.updated_at, COALESCE(array_agg(DISTINCT r.name) FILTER (WHERE r.name IS NOT NULL), '{}') AS roles FROM users u LEFT JOIN user_roles ur ON ur.user_id = u.id LEFT JOIN roles r ON r.id = ur.role_id WHERE u.email = :email GROUP BY u.id LIMIT 1; -- name: get-user-by-username^ SELECT u.id, u.username, u.email, u.salt, u.hashed_password, u.bio, u.image, u.phone, u.user_type, u.company_name, u.created_at, u.updated_at, COALESCE(array_agg(DISTINCT r.name) FILTER (WHERE r.name IS NOT NULL), '{}') AS roles FROM users u LEFT JOIN user_roles ur ON ur.user_id = u.id LEFT JOIN roles r ON r.id = ur.role_id WHERE u.username = :username GROUP BY u.id LIMIT 1; -- name: create-new-user