์บ๋ฆฐ๋๋ฅผ ์ถ๊ฐํ๊ธฐ ์ , ํฌ๋๋ฆฌ์คํธ๋ง ์์์ ๋๋ ์ ์ฅํ ๋ ์ง(created_at)๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์คํฌ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์์๋๋ฐ, ์บ๋ฆฐ๋๋ฅผ ์ถ๊ฐํ๋ฉด์ ์ ์ฅ ๋ ์ง ๋ฐ๋ก, ํ์คํฌ ๊ธฐ์ค์ผ ๋ฐ๋ก ๋๋๊ฒ ๋์ด์ ๋ค์๊ณผ ๊ฐ์ด due_date ์ปฌ๋ผ์ ์ถ๊ฐํ์ต๋๋ค.
ALTER TABLE tasks
ADD COLUMN due_date DATE;
์ดํ createTaskํ๋ ํจ์์ props๋ก due_date๋ฅผ ์ถ๊ฐํ๊ณ , ์ด์ธ์ ํ์ํ ๋ถ๋ถ์ ์์ฑํด์ Calendar ํ์ด์ง์์ ๋ชจ๋ฌ๋ก ํ์คํฌ๋ฅผ ์์ฑํ ์ ์๋๋ก ์์ ํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ DB๋ฅผ ํ์ธํ๋ due_date๊ฐ -1์ผ ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๊ฒ์ ๋๋ค.
๊ทธ๋์ timestamptz๋ก ํ์ ์ ๋ฐ๊พธ๊ณ ์๋ถ์ด๊น์ง ๋ณด๋๊น -9์๊ฐ์ด ๋์ด์๋ ๊ฒ์ ๋ณด๋ UTC ๊ธฐ์ค์ผ๋ก ๋ ์ง๊ฐ ์ ์ฅ๋ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค.
๋ค์ ์ฌ์ง์ ๋ณด๋ฉด 08/12์ ํ์คํฌ์ due_date๋ก 08/11 15์๋ก ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ฐพ์๋ณด๋ JavaScript์ toISOString ํจ์๊ฐ UTC๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐํํ๊ธฐ ๋๋ฌธ์ KST์ ๋น๊ตํ๋ฉด ์๊ธด 9์๊ฐ์ ์์ฐจ๋ก ์ธํ ๋ฌธ์ ์์ต๋๋ค.
๋ค๋ฅธ ๋ถ๋ค์ ์ฝ๋๋ฅผ ๋ณด๋ ํ์ฌ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ฐจ์ด๋ฅผ ๊ณ์ฐํด์ ๊ทธ๋งํผ์ ํ์ฌ ์๊ฐ์์ ๋นผ์ ์๊ฐ์ ์ค์ ํ๋ ๋ฐฉ์์ด ๋ง์ด ๋ณด์๋๋ฐ, ์ ๋ props๋ก ๋ฐ์ due_date๋ฅผ ๋ณํํด์ KST๋ก ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก createTask ํจ์๋ฅผ ์์ ํด์ ์ผ์๊ฐ ๋ฐ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
import { addHours } from 'date-fns'
...
createTask: async (title, detail, userId, dueDate) => {
const kstDueDate = addHours(new Date(dueDate), 9)
const supabase = createClient()
const { data, error } = await supabase
.from('todolist')
.insert([{ todo_title: title, todo_detail: detail, user_id: userId, due_date: kstDueDate.toISOString() }])
.select()
if (error) {
console.error('Error adding task: ' + error.message)
} else {
set(state => ({ tasks: [...state.tasks, ...data] }))
}
},
...
๊ทธ๋ฐ๋ฐ ์์์ due_date์ ํ์ ์ date → timestamptz๋ก ๋ฐ๊ฟจ์๋๋ฐ, Today ํ์ด์ง์์ ํ์คํฌ๋ฅผ ์ถ๊ฐํ๊ณ ์๋ก๊ณ ์นจํ๋ฉด ์์ฑํ ๋ด์ฉ์ด ๋ ์๊ฐ๋ ํ์์ ๋ชฉ๊ฒฉํ์ต๋๋ค.
...
const startDayTime = new Date(selectedDate)
startDayTime.setHours(0, 0, 0, 0)
const endDayTime = new Date(selectedDate)
endDayTime.setHours(23, 59, 59, 999)
const supabase = createClient()
const { data, error } = await supabase
.from('todolist')
.select('*')
.gte('due_date', startDayTime.toISOString())
.lte('due_date', endDayTime.toISOString())
...
Supabase์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋ ์์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ธ์๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ ์์ํ ํ์๋ผ์ธ์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค๊ณ ํ๋จํ๊ณ ๋ค์ date ํ์ ์ผ๋ก ๋ณ๊ฒฝํด์ฃผ๋ ๋ค์ ์ ์์ ์ผ๋ก ํ์คํฌ๋ฅผ ํ์ธํ ์ ์์์ต๋๋ค.
'issue' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์๊ฐ์ ์ ์ด๋ฉ์ผ ์ธ์ฆ ๋ณด์ ์ด์ (api endpoint ๊ด๋ จ) (2) | 2024.10.16 |
---|---|
Git Error: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400 (1) | 2024.10.02 |
๋น๋ ์ค Module not found Error (Git) (0) | 2024.07.26 |
์์ ๋ก๊ทธ์ธ ๊ด๋ จ ์๋ฌ (OAuth flow error) (0) | 2024.07.26 |
์ธ์ฆ ์ํ์ ๋ฐ๋ฅธ ํ์ด์ง ์ ๊ทผ ์ ํ (Next.js, supabase) (0) | 2024.07.26 |