/**
 * Ngày theo GIỜ VIỆT NAM của một cột thời điểm (`timestamptz`) khi dùng trong câu SQL.
 *
 * `cột::date` cắt theo múi giờ của phiên cơ sở dữ liệu (thường là UTC), lệch 7 tiếng so với ngày người dùng thấy:
 * khách tạo lúc 01:00 sáng 01/09 giờ Việt Nam bị tính vào 31/08, lượt check-in lúc 6:30 sáng bị tính vào hôm qua.
 * Mọi so sánh "thời điểm nằm trong ngày/kỳ nào" phải đi qua hàm này.
 */
import { sql, type AnyColumn, type SQL } from "drizzle-orm";

export function vnDate(column: AnyColumn | SQL): SQL {
  return sql`(${column} at time zone 'Asia/Ho_Chi_Minh')::date`;
}
