initial commit: rocket.new export of broadcastbeat

This commit is contained in:
Ryan Salazar
2026-05-07 16:39:17 +00:00
commit 70aa1ad46e
302 changed files with 60710 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
import { NextRequest, NextResponse } from "next/server";
import { createClient } from "@/lib/supabase/server";
export async function GET(req: NextRequest) {
const supabase = await createClient();
const { data: { user }, error: authError } = await supabase.auth.getUser();
if (authError || !user) {
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
}
const url = new URL(req.url);
const limit = parseInt(url.searchParams.get("limit") || "30");
const { data, error } = await supabase
.from("notifications")
.select("*")
.eq("user_id", user.id)
.order("created_at", { ascending: false })
.limit(limit);
if (error) {
return NextResponse.json({ error: error.message }, { status: 500 });
}
const unreadCount = data?.filter((n) => !n.is_read).length ?? 0;
return NextResponse.json({ notifications: data ?? [], unreadCount });
}
export async function PATCH(req: NextRequest) {
const supabase = await createClient();
const { data: { user }, error: authError } = await supabase.auth.getUser();
if (authError || !user) {
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
}
const body = await req.json();
const { ids, markAll } = body;
if (markAll) {
const { error } = await supabase
.from("notifications")
.update({ is_read: true })
.eq("user_id", user.id)
.eq("is_read", false);
if (error) return NextResponse.json({ error: error.message }, { status: 500 });
} else if (ids && Array.isArray(ids)) {
const { error } = await supabase
.from("notifications")
.update({ is_read: true })
.eq("user_id", user.id)
.in("id", ids);
if (error) return NextResponse.json({ error: error.message }, { status: 500 });
}
return NextResponse.json({ success: true });
}
export async function DELETE(req: NextRequest) {
const supabase = await createClient();
const { data: { user }, error: authError } = await supabase.auth.getUser();
if (authError || !user) {
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
}
const body = await req.json();
const { ids, dismissAll } = body;
if (dismissAll) {
const { error } = await supabase
.from("notifications")
.delete()
.eq("user_id", user.id);
if (error) return NextResponse.json({ error: error.message }, { status: 500 });
} else if (ids && Array.isArray(ids)) {
const { error } = await supabase
.from("notifications")
.delete()
.eq("user_id", user.id)
.in("id", ids);
if (error) return NextResponse.json({ error: error.message }, { status: 500 });
}
return NextResponse.json({ success: true });
}