Some checks failed
Deploy to Cloudflare Workers / deploy (push) Has been cancelled
44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import { createClient } from "@/lib/supabase/server";
|
|
import { requireUser } from "@/lib/api/auth";
|
|
import { apiError, apiSuccess, parseJson } from "@/lib/api/errors";
|
|
import * as issues from "@/lib/services/issues";
|
|
|
|
export async function GET(request: Request) {
|
|
try {
|
|
const supabase = await createClient();
|
|
const user = await requireUser(supabase);
|
|
const { searchParams } = new URL(request.url);
|
|
const asMaster = searchParams.get("as") === "master";
|
|
const data = await issues.listIssuesForUser(
|
|
supabase,
|
|
user.id,
|
|
asMaster
|
|
);
|
|
return apiSuccess(data);
|
|
} catch (e) {
|
|
return apiError(e);
|
|
}
|
|
}
|
|
|
|
export async function POST(request: Request) {
|
|
try {
|
|
const supabase = await createClient();
|
|
const user = await requireUser(supabase);
|
|
const body = await parseJson<{
|
|
leagueId: string;
|
|
competitionId?: string;
|
|
subject: string;
|
|
body: string;
|
|
}>(request);
|
|
const data = await issues.createIssue(supabase, user.id, {
|
|
leagueId: body.leagueId,
|
|
competitionId: body.competitionId,
|
|
subject: body.subject,
|
|
body: body.body,
|
|
});
|
|
return apiSuccess(data, 201);
|
|
} catch (e) {
|
|
return apiError(e);
|
|
}
|
|
}
|