76 lines
3.1 KiB
SQL
76 lines
3.1 KiB
SQL
-- name: UpsertPriceInquiry :one
|
|
INSERT INTO price_inquiries (
|
|
id, user_id, phone, province, city, district, project_name, status,
|
|
last_submitted_at, created_at, updated_at
|
|
)
|
|
VALUES (
|
|
?, ?, ?, ?, ?, ?, ?, ?,
|
|
STRFTIME('%Y-%m-%d %H:%M:%f', 'now', '+8 hours'),
|
|
STRFTIME('%Y-%m-%d %H:%M:%f', 'now', '+8 hours'),
|
|
STRFTIME('%Y-%m-%d %H:%M:%f', 'now', '+8 hours')
|
|
)
|
|
ON CONFLICT(phone) DO UPDATE SET
|
|
last_submitted_at = STRFTIME('%Y-%m-%d %H:%M:%f', 'now', '+8 hours'),
|
|
updated_at = STRFTIME('%Y-%m-%d %H:%M:%f', 'now', '+8 hours')
|
|
RETURNING id, user_id, phone, province, city, district, project_name, status, remark, last_submitted_at, created_at, updated_at;
|
|
|
|
-- name: ListPriceInquiries :many
|
|
SELECT id, user_id, phone, province, city, district, project_name, status, remark, last_submitted_at, created_at, updated_at FROM price_inquiries
|
|
WHERE (
|
|
sqlc.arg(area) = ''
|
|
OR province LIKE '%' || sqlc.arg(area) || '%'
|
|
OR city LIKE '%' || sqlc.arg(area) || '%'
|
|
OR district LIKE '%' || sqlc.arg(area) || '%'
|
|
)
|
|
AND (sqlc.arg(phone) = '' OR phone LIKE '%' || sqlc.arg(phone) || '%')
|
|
AND (sqlc.arg(status) = '' OR status = sqlc.arg(status))
|
|
AND (
|
|
(sqlc.arg(time_from) = '' AND sqlc.arg(time_to) = '')
|
|
OR (
|
|
(sqlc.arg(time_from) = '' OR created_at >= sqlc.arg(time_from) || ' 00:00:00')
|
|
AND (sqlc.arg(time_to) = '' OR created_at <= sqlc.arg(time_to) || ' 23:59:59')
|
|
)
|
|
OR (
|
|
(sqlc.arg(time_from) = '' OR updated_at >= sqlc.arg(time_from) || ' 00:00:00')
|
|
AND (sqlc.arg(time_to) = '' OR updated_at <= sqlc.arg(time_to) || ' 23:59:59')
|
|
)
|
|
OR (
|
|
(sqlc.arg(time_from) = '' OR last_submitted_at >= sqlc.arg(time_from) || ' 00:00:00')
|
|
AND (sqlc.arg(time_to) = '' OR last_submitted_at <= sqlc.arg(time_to) || ' 23:59:59')
|
|
)
|
|
)
|
|
ORDER BY last_submitted_at DESC, updated_at DESC, created_at DESC
|
|
LIMIT sqlc.arg(limit) OFFSET sqlc.arg(offset);
|
|
|
|
-- name: CountPriceInquiries :one
|
|
SELECT COUNT(*) FROM price_inquiries
|
|
WHERE (
|
|
sqlc.arg(area) = ''
|
|
OR province LIKE '%' || sqlc.arg(area) || '%'
|
|
OR city LIKE '%' || sqlc.arg(area) || '%'
|
|
OR district LIKE '%' || sqlc.arg(area) || '%'
|
|
)
|
|
AND (sqlc.arg(phone) = '' OR phone LIKE '%' || sqlc.arg(phone) || '%')
|
|
AND (sqlc.arg(status) = '' OR status = sqlc.arg(status))
|
|
AND (
|
|
(sqlc.arg(time_from) = '' AND sqlc.arg(time_to) = '')
|
|
OR (
|
|
(sqlc.arg(time_from) = '' OR created_at >= sqlc.arg(time_from) || ' 00:00:00')
|
|
AND (sqlc.arg(time_to) = '' OR created_at <= sqlc.arg(time_to) || ' 23:59:59')
|
|
)
|
|
OR (
|
|
(sqlc.arg(time_from) = '' OR updated_at >= sqlc.arg(time_from) || ' 00:00:00')
|
|
AND (sqlc.arg(time_to) = '' OR updated_at <= sqlc.arg(time_to) || ' 23:59:59')
|
|
)
|
|
OR (
|
|
(sqlc.arg(time_from) = '' OR last_submitted_at >= sqlc.arg(time_from) || ' 00:00:00')
|
|
AND (sqlc.arg(time_to) = '' OR last_submitted_at <= sqlc.arg(time_to) || ' 23:59:59')
|
|
)
|
|
);
|
|
|
|
-- name: UpdatePriceInquiry :one
|
|
UPDATE price_inquiries
|
|
SET status = ?, remark = ?, updated_at = STRFTIME('%Y-%m-%d %H:%M:%f', 'now', '+8 hours')
|
|
WHERE id = ?
|
|
RETURNING id, user_id, phone, province, city, district, project_name, status, remark, last_submitted_at, created_at, updated_at;
|