hiling_go/db/queries/locations.sql

59 lines
1.6 KiB
MySQL
Raw Normal View History

2023-09-13 21:42:04 +07:00
-- name: GetListLocations :many
2023-09-14 13:49:03 +07:00
SELECT * FROM locations;
2023-09-13 21:42:04 +07:00
2023-09-14 22:51:01 +07:00
-- name: GetListRecentLocationsWithRatings :many
SELECT
l.id,
name,
thumbnail,
2023-09-20 13:37:14 +07:00
COALESCE(re.regency_name, '') as regency_name,
COALESCE(pr.province_name, '') as province_name,
(SELECT COALESCE(SUM(score), 0) from reviews re where re.is_from_critic = true and re.location_id = l.id) as critic_score,
2023-09-14 22:51:01 +07:00
(SELECT COUNT(id) from reviews re where re.is_from_critic = true and re.location_id = l.id) as critic_count,
2023-09-20 13:37:14 +07:00
(SELECT COALESCE(SUM(score), 0) from reviews re where re.is_from_critic = false and re.location_id = l.id) as user_score,
2023-09-14 22:51:01 +07:00
(SELECT COUNT(id) from reviews re where re.is_from_critic = false and re.location_id = l.id) as user_count
FROM locations l
JOIN regencies re on re.id = l.regency_id
2023-09-20 13:37:14 +07:00
JOIN provinces pr on re.province_id = pr.id
2023-09-14 22:51:01 +07:00
WHERE approved_by IS NOT NULL
ORDER BY l.created_at ASC
LIMIT $1;
2023-09-13 21:42:04 +07:00
-- name: GetLocation :one
2023-09-19 21:50:33 +07:00
SELECT
l.id,
l.name,
l.address,
l.thumbnail,
l.submitted_by,
2023-09-20 11:20:06 +07:00
COALESCE(r.regency_name, '') as regency_name,
COALESCE(p.province_name, '') as province_name,
COALESCE(r2.region_name, '') as region_name,
2023-09-19 21:50:33 +07:00
u.username as submitted_by_user
FROM locations l
JOIN regencies r on r.id = l.regency_id
JOIN provinces p on p.id = r.province_id
JOIN regions r2 on r2.id = p.region_id
JOIN users u on l.approved_by = u.id
WHERE l.id = $1;
2023-09-13 21:42:04 +07:00
-- name: CreateLocation :exec
INSERT INTO locations(
address,
name,
submitted_by,
regency_id,
google_maps_link
) values (
$1, $2, $3, $4, $5
2023-09-20 13:37:14 +07:00
);
-- name: GetLocationTag :many
SELECT
name
FROM tags
WHERE tags_type = 'location'
AND
target_id = $1
AND
approved_by IS NOT NULL;