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 }) +}