Advertisement
Guest User

Untitled

a guest
Sep 10th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DROP FUNCTION IF EXISTS aec_app_simple_profile_select(
  2.     p_id int,
  3.     p_profile_id int,
  4.     p_lat double precision,
  5.     p_lng double precision);
  6.  
  7. CREATE OR REPLACE FUNCTION aec_app_simple_profile_select(
  8.     p_id int,
  9.     p_profile_id int,
  10.     p_lat double precision,
  11.     p_lng double precision)
  12.  
  13. RETURNS TABLE(
  14.     id int,
  15.     apelido varchar(100),
  16.     idade smallint,
  17.     sexo boolean,
  18.     pais varchar(100),
  19.     estado varchar(100),
  20.     cidade varchar(100),
  21.     fotos smallint,
  22.     is_favorite int,
  23.     distancia double precision,
  24.     places_nome varchar(150),
  25.     display_location smallint) AS
  26. $$
  27. BEGIN
  28.     RETURN QUERY EXECUTE 'SELECT
  29.        usuarios.id as id,
  30.        usuarios.apelido as apelido,
  31.        (date_part(''year'', NOW()) - usuarios.nascano - ((date_part(''month'', NOW()), date_part(''day'', NOW())) < (usuarios.nascmes, usuarios.nascdia))::int)::smallint as idade,
  32.        usuarios.sexo as sexo,
  33.        paises_nomes.nome AS pais,
  34.        estados.nome AS estado,
  35.        cidades.nome AS cidade,
  36.        usuarios.fotos,
  37.        usuariosxfavoritos.id as is_favorite,
  38.        CASE
  39.          WHEN ' || p_lat || ' <> 999999999 AND ' || p_lng  || ' <> 999999999 THEN
  40.            round(public.earth_distance(public.ll_to_earth(' || p_lat || ', ' || p_lng || '), public.ll_to_earth(usuariosxsessoes.latitude, usuariosxsessoes.longitude))/1000)
  41.          ELSE NULL
  42.        END AS distancia,
  43.        places_nomes.nome AS places_nome,
  44.        display_location AS display_location
  45.    FROM usuarios where usuarios.id = ' || p_profile_id || '
  46.    LEFT JOIN usuariosxsessoes ON usuariosxsessoes.id_usr = ' || p_profile_id || '
  47.    LEFT JOIN usuariosxfavoritos ON usuariosxfavoritos.id_usr = ' || p_id || ' AND id_fav = ' || p_profile_id || '
  48.    LEFT JOIN places_nomes ON usuariosxsessoes.place_id = places_nomes.id AND places_nomes.lang = 1
  49.    LEFT JOIN paises_nomes ON paises_nomes.id_pais = usuarios.pais AND paises_nomes.lang = 1
  50.    LEFT JOIN estados ON estados.id = usuarios.estado
  51.    LEFT JOIN cidades ON cidades.id = usuarios.cidade';
  52.  
  53. END;
  54. $$
  55. LANGUAGE 'plpgsql';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement