2023-03-10 23:32:27 +00:00
|
|
|
SELECT
|
|
|
|
p.id,
|
|
|
|
p.title,
|
|
|
|
p.description,
|
|
|
|
p.agent_id,
|
|
|
|
p.state as "state: _",
|
|
|
|
p.time_created,
|
|
|
|
p.last_updated
|
|
|
|
FROM property p, property_details pd, location l where pd.property_id = p.id AND pd.location_id = l.id
|
2023-03-11 18:28:53 +00:00
|
|
|
AND (p.time_created <= $1 OR $1 IS null) -- Before Filter
|
|
|
|
AND (p.time_created >= $2 OR $2 IS null) -- After Filter
|
|
|
|
AND (LOWER(p.title) LIKE '%' || LOWER($3) || '%' OR $3 IS null) -- Title filter (like)
|
|
|
|
AND (LOWER(p.description) LIKE '%' || LOWER($4) || '%' OR $4 IS null) -- Description Filter (like)
|
|
|
|
AND (pd.meters > $5 OR $5 IS null) -- Bigger than or equal to filter
|
|
|
|
AND (pd.meters < $6 OR $6 IS null) -- Smaller than or equal to filter
|
|
|
|
AND (LOWER(l.country) LIKE '%' || LOWER($7) || '%' OR $7 IS null) -- Location Filter
|
|
|
|
AND (LOWER(l.province) LIKE '%' || LOWER($8) || '%' OR $8 IS null) -- Location Filter
|
|
|
|
AND (LOWER(l.city) LIKE '%' || LOWER($9) || '%' OR $9 IS null) -- Location Filter
|
|
|
|
AND (LOWER(l.district) LIKE '%' || LOWER($10) || '%' OR $10 IS null) -- Location Filter
|
|
|
|
AND (pd.listing_type LIKE $11 || '%' OR $11 IS null) -- Listing type filter
|
|
|
|
AND (split_part(pd.listing_type, ' ', 2)::FLOAT8 >= $12::FLOAT8 OR $12 IS null) -- More expensive than filter
|
|
|
|
AND (split_part(pd.listing_type, ' ', 2)::FLOAT8 <= $13::FLOAT8 OR $13 IS null) -- More expensive than filter
|
2023-03-10 23:32:27 +00:00
|
|
|
ORDER BY p.time_created DESC
|
2023-03-11 18:28:53 +00:00
|
|
|
LIMIT 25 OFFSET $14
|