feat: implement Sleepy sleep diary
This commit is contained in:
28
app/api/entries/[date]/route.ts
Normal file
28
app/api/entries/[date]/route.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
import { getEntry, saveEntry } from '@/lib/db';
|
||||
import type { SleepEntry } from '@/lib/sleep';
|
||||
|
||||
export const runtime = 'nodejs';
|
||||
|
||||
function isDate(value: string): boolean {
|
||||
return /^\d{4}-\d{2}-\d{2}$/.test(value);
|
||||
}
|
||||
|
||||
export async function GET(_: Request, { params }: { params: Promise<{ date: string }> }) {
|
||||
const { date } = await params;
|
||||
if (!isDate(date)) return NextResponse.json({ error: 'Некорректная дата' }, { status: 400 });
|
||||
|
||||
return NextResponse.json({ entry: getEntry(date) });
|
||||
}
|
||||
|
||||
export async function PUT(request: Request, { params }: { params: Promise<{ date: string }> }) {
|
||||
const { date } = await params;
|
||||
if (!isDate(date)) return NextResponse.json({ error: 'Некорректная дата' }, { status: 400 });
|
||||
|
||||
const entry = await request.json() as SleepEntry;
|
||||
if (entry.date !== date || entry.rating < 1 || entry.rating > 5 || entry.awakenings < 0) {
|
||||
return NextResponse.json({ error: 'Проверьте заполненные значения' }, { status: 400 });
|
||||
}
|
||||
|
||||
return NextResponse.json({ entry: saveEntry(entry) });
|
||||
}
|
||||
Reference in New Issue
Block a user