From cc69bece47089d4e7ac94d53b1151cb249b3aae2 Mon Sep 17 00:00:00 2001 From: Alex Kern Date: Tue, 10 Sep 2024 22:53:46 -0700 Subject: [PATCH] add api routes --- src/app/api/create/route.ts | 16 ++++++++++++++++ src/app/api/destroy/route.ts | 20 ++++++++++++++++++++ src/app/api/renew/route.ts | 13 +++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 src/app/api/create/route.ts create mode 100644 src/app/api/destroy/route.ts create mode 100644 src/app/api/renew/route.ts diff --git a/src/app/api/create/route.ts b/src/app/api/create/route.ts new file mode 100644 index 0000000..6dc6f0a --- /dev/null +++ b/src/app/api/create/route.ts @@ -0,0 +1,16 @@ +import { NextRequest, NextResponse } from 'next/server' +import { Channel, channelRepo } from '../../../channel' + +export async function POST(request: NextRequest): Promise { + const { uploaderPeerID } = await request.json() + + if (!uploaderPeerID) { + return NextResponse.json( + { error: 'uploaderPeerID is required' }, + { status: 400 }, + ) + } + + const channel: Channel = await channelRepo.create(uploaderPeerID) + return NextResponse.json(channel) +} diff --git a/src/app/api/destroy/route.ts b/src/app/api/destroy/route.ts new file mode 100644 index 0000000..217d601 --- /dev/null +++ b/src/app/api/destroy/route.ts @@ -0,0 +1,20 @@ +import { NextRequest, NextResponse } from 'next/server' +import { channelRepo } from '../../../channel' + +export async function POST(request: NextRequest): Promise { + const { slug } = await request.json() + + if (!slug) { + return NextResponse.json({ error: 'Slug is required' }, { status: 400 }) + } + + try { + await channelRepo.destroy(slug) + return NextResponse.json({ success: true }, { status: 200 }) + } catch (error) { + return NextResponse.json( + { error: 'Failed to destroy channel' }, + { status: 500 }, + ) + } +} diff --git a/src/app/api/renew/route.ts b/src/app/api/renew/route.ts new file mode 100644 index 0000000..0bed687 --- /dev/null +++ b/src/app/api/renew/route.ts @@ -0,0 +1,13 @@ +import { NextRequest, NextResponse } from 'next/server' +import { channelRepo } from '../../../channel' + +export async function POST(request: NextRequest): Promise { + const { slug } = await request.json() + + if (!slug) { + return NextResponse.json({ error: 'Slug is required' }, { status: 400 }) + } + + await channelRepo.renew(slug) + return NextResponse.json({ success: true }) +}