ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

์˜ค์ „ ์Šคํฌ๋Ÿผ ์‹œ๊ฐ„์— ์บ˜๋ฆฐ๋” ๊ตฌํ˜„ ๊ธฐ๋Šฅ์„ ์ด์•ผ๊ธฐ ๋‚˜๋ˆ„๋˜ ์ค‘, ํŠœํ„ฐ๋‹˜์˜ ํ•œ ๋งˆ๋””

"์•ฝ์† ๋ฐ์ดํ„ฐ๋Š” ํ•œ ๋ฒˆ์— ๋‹ค ๋ฐ›์•„์˜ค๋‚˜์š”? ์›”๋ณ„๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฑด ์–ด๋–จ๊นŒ์š”?"

 

ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„์ธ ์ง€๊ธˆ์€ ์ž„์˜์˜ ๊ฐ’ ๋‘์–ด ๊ฐœ๋งŒ ๋„ฃ์–ด๋†“๊ณ  ์ „์ฒด๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์•ˆ ๋˜๊ฒ ์ง€๋งŒ,

์‹ค์ œ๋กœ ์ด ์„œ๋น„์Šค๊ฐ€ ํ™œ์„ฑํ™”๋œ๋‹ค๋ฉด..

์—ฌ๋Ÿฌ ์œ ์ €๊ฐ€ ์•ฝ์† ์ผ์ •์„ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋˜๊ณ , ์‹œ๊ฐ„์ด ์ง€๋‚˜ ์•„์ฃผ ์˜ˆ์ „ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋‹ค ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋œ๋‹ค๋ฉด...

 

์•ˆ ๋˜๊ฒ ๋‹ค. ๋งค ๋‹ฌ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์บ์‹ฑํ•ด๋‘์–ด์•ผ๊ฒ ๋‹ค.

 

์›”๋ณ„ ๋ฐ์ดํ„ฐ ์บ์‹ฑํ•˜๊ธฐ

 

๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด ์บ˜๋ฆฐ๋” ์ปดํฌ๋„ŒํŠธ - useQuery ์ปค์Šคํ…€ ํ›… - supabase ๋ฐ์ดํ„ฐ ํŽ˜์นญ ํ•จ์ˆ˜ ์„ธ ๋กœ์ง์˜ ๊ด€๊ณ„๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค.

 

์บ˜๋ฆฐ๋” ์ปดํฌ๋„ŒํŠธ

์บ˜๋ฆฐ๋” ์ปดํฌ๋„ŒํŠธ์˜ ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ํ•ด๋‹น ๋‹ฌ์˜ ์ƒํƒœ ๊ด€๋ฆฌ - Date ๊ฐ์ฒด : Wed Apr 09 2025 23:37:00 GMT+0900 (ํ•œ๊ตญ ํ‘œ์ค€์‹œ)
  • ํ•ด๋‹น ๋‹ฌ์˜ ํ˜„์žฌ ๋…„๋„ - number : 2025
  • useQuery ์ปค์Šคํ…€ ํ›…์— ๋…„๋„์™€ ๋‹ฌ์˜ ๊ฐ’ ๋„˜๊ฒจ์ฃผ์–ด ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ : ์•ฝ์† ์ผ์ • ๋ฐ์ดํ„ฐ
  const [month, setMonth] = useState(new Date()); //ํ•ด๋‹น ๋‹ฌ 
  const calendarYear = month.getFullYear(); // ํ•ด๋‹น ๋‹ฌ์˜ ๋…„๋„
  const { data: events, isPending, isError, error } = useGetCalendarPlans(calendarYear, month);

 

 

useQuery ์ปค์Šคํ…€ ํ›…

useQuery ์ปค์Šคํ…€ ํ›…์˜ ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • supabase์— ์ˆซ์ž๋กœ ์ „๋‹ฌํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ํƒ€์ž… ์ „ํ™˜
  • ํ•ด๋‹น ๋…„๋„์˜ ๋‹ฌ๋งˆ๋‹ค ์บ์‹ฑ (staleTime์€ 1์ผ)
  • supabase ํŽ˜์นญ ๋กœ์ง์— ๋…„๋„์™€ ๋‹ฌ ๋„˜๊ฒจ์ฃผ์–ด ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ
  • ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์บ˜๋ฆฐ๋”์— ์ ์šฉํ•˜๋„๋ก ๊ฐ€๊ณตํ•˜๊ธฐ
export const useGetCalendarPlans = (year: number, monthDate: Date) => {
  const month = monthDate.getMonth() + 1; // Date ๊ฐ์ฒด -> ์ˆซ์ž ์ „ํ™˜
  return useQuery<CalendarEventType[]>({
    queryKey: [QUERY_KEY.CALENDAR_PLANS, year, month], //๋‹ฌ๋งˆ๋‹ค ์บ์‹ฑ
    queryFn: async () => {
      const plans: PlansType[] = await getPlans(year, month); // supabase์—์„œ plans ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

      // ์บ˜๋ฆฐ๋”์— ์ ์šฉ๋˜๋„๋ก ๋ฐ์ดํ„ฐ ๊ฐ€๊ณตํ•˜๊ธฐ
      const events: CalendarEventType[] = plans.map((plan) => ({
        id: plan.plan_id,
        title: plan.title,
        start: new Date(plan.start_date),
        end: new Date(plan.end_date),
      }));
      return events;
    },
     staleTime: 24 * 60 * 60 * 1000, // 1์ผ
  });
};

 

 

 

supabase ๋ฐ์ดํ„ฐ ํŽ˜์นญ ํ•จ์ˆ˜

supabase ๋ฐ์ดํ„ฐ ํŽ˜์นญ ํ•จ์ˆ˜์˜ ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ๋งค ๋‹ฌ์˜ ์ฒซ ๋‚ ๊ณผ ๋งˆ์ง€๋ง‰ ๋‚  ๋งŒ๋“ค๊ธฐ
  • ์•ฝ์† ์ถ”๊ฐ€ํ•  ๋•Œ 1์‹œ๊ฐ„ ์ถ”๊ฐ€ํ•œ ์ด์œ 
    • DnD ์‹œ ๋‹จ์ผ ์ผ์ • ๋Š˜์–ด๋‚จ (end-start = 0 ์ผ ๋•Œ ์ž๋™์ฒ˜๋ฆฌ)
    • ์—ฐ์† ์ผ์ • ์‹œ ๋งˆ์ง€๋ง‰ ๋‚  ๋‹ฌ๋ ฅ์— ์ ์šฉ์‹œํ‚ค๊ธฐ
  • ์›”๋ง~์›”์ดˆ ์ด์–ด์ง€๋Š” ์•ฝ์†๋„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด setHours ์ ์šฉ
  • lte: ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค / gte: ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค
export const getPlans = async (year: number, month: number): Promise<PlansType[]> => {
  const startOfMonth = new Date(year, month - 1, 1); //์ฒซ ๋‚ 
  const endOfMonth = new Date(year, month, 0); //๋งˆ์ง€๋ง‰ ๋‚  (4/30 00:00:00)
  // ํ˜„์žฌ start_date๊ฐ€ 4/30 01:00 ์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์† ์ผ์ •์˜ ์ฒซ ๋‚ ๋„ ํ•จ๊ป˜ ํฌํ•จ์‹œํ‚ค๊ธฐ ์œ„ํ•จ
  endOfMonth.setHours(23, 59, 59, 999);

  const { data: plans, error } = await supabase
    .from(PLANS)
    .select('plan_id, user_id, contacts_id, title, detail, priority, start_date, end_date')
    //ํ•ด๋‹น ๋‹ฌ์˜ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ(๋„˜์–ด๊ฐ€๋Š” ์—ฐ์† ์ผ์ • ํฌํ•จ)
    .lte('start_date', endOfMonth.toISOString()) // ์ผ์ •์ด ๋‹ฌ์˜ ๋งˆ์ง€๋ง‰ ๋‚ ๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ์ด์ „์— ์‹œ์ž‘
    .gte('end_date', startOfMonth.toISOString()); // ์ผ์ •์ด ๋‹ฌ์˜ ์ฒซ ๋‚ ๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ์ดํ›„์— ๋
  if (error) {
    throw new Error(error.message);
  }
  return plans;
};

 

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2026/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ