Fix briefs API to use JSON file storage
This commit is contained in:
+42
-26
@@ -1,9 +1,32 @@
|
|||||||
import { NextRequest, NextResponse } from "next/server";
|
import { NextRequest, NextResponse } from "next/server";
|
||||||
import { supabase } from "@/lib/supabase";
|
import fs from "fs";
|
||||||
|
import path from "path";
|
||||||
|
|
||||||
|
const STORAGE_FILE = path.join(process.cwd(), "data", "eod_briefs.json");
|
||||||
|
|
||||||
const DISCORD_BOT_TOKEN = process.env.DISCORD_BOT_TOKEN || "MTQ3MTk4OTUzNjE1MzQwMzU5Nw.Ghtj4n.g-tl-Ijhfn9cg6zUCUIVd94EdwL32KmlVgRoSc";
|
const DISCORD_BOT_TOKEN = process.env.DISCORD_BOT_TOKEN || "MTQ3MTk4OTUzNjE1MzQwMzU5Nw.Ghtj4n.g-tl-Ijhfn9cg6zUCUIVd94EdwL32KmlVgRoSc";
|
||||||
const EOD_CHANNEL = "1476344633406656785";
|
const EOD_CHANNEL = "1476344633406656785";
|
||||||
|
|
||||||
|
function ensureStorage() {
|
||||||
|
const dir = path.dirname(STORAGE_FILE);
|
||||||
|
if (!fs.existsSync(dir)) {
|
||||||
|
fs.mkdirSync(dir, { recursive: true });
|
||||||
|
}
|
||||||
|
if (!fs.existsSync(STORAGE_FILE)) {
|
||||||
|
fs.writeFileSync(STORAGE_FILE, "[]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getBriefs() {
|
||||||
|
ensureStorage();
|
||||||
|
return JSON.parse(fs.readFileSync(STORAGE_FILE, "utf-8"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveBriefs(data: any[]) {
|
||||||
|
ensureStorage();
|
||||||
|
fs.writeFileSync(STORAGE_FILE, JSON.stringify(data, null, 2));
|
||||||
|
}
|
||||||
|
|
||||||
function formatEODBrief(data: any): string {
|
function formatEODBrief(data: any): string {
|
||||||
return `🌙 END OF DAY - ${data.date || new Date().toISOString().split('T')[0]}
|
return `🌙 END OF DAY - ${data.date || new Date().toISOString().split('T')[0]}
|
||||||
|
|
||||||
@@ -21,37 +44,29 @@ ${(data.tomorrow || []).map((t: string) => `- ${t}`).join('\n')}`;
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function GET() {
|
export async function GET() {
|
||||||
const { data, error } = await supabase
|
const briefs = getBriefs();
|
||||||
.from("eod_briefs")
|
return NextResponse.json(briefs);
|
||||||
.select("*")
|
|
||||||
.order("created_at", { ascending: false })
|
|
||||||
.limit(20);
|
|
||||||
|
|
||||||
if (error) {
|
|
||||||
return NextResponse.json({ error: error.message }, { status: 500 });
|
|
||||||
}
|
|
||||||
return NextResponse.json(data || []);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function POST(request: NextRequest) {
|
export async function POST(request: NextRequest) {
|
||||||
try {
|
try {
|
||||||
const body = await request.json();
|
const body = await request.json();
|
||||||
|
|
||||||
const { data: insertData, error } = await supabase
|
const brief = {
|
||||||
.from("eod_briefs")
|
id: `eod-${Date.now()}`,
|
||||||
.insert([{
|
date: body.date || new Date().toISOString().split('T')[0],
|
||||||
date: body.date || new Date().toISOString().split('T')[0],
|
completed: body.completed || [],
|
||||||
completed: body.completed,
|
progress: body.progress || {},
|
||||||
progress: body.progress,
|
council: body.council || {},
|
||||||
council: body.council,
|
tomorrow: body.tomorrow || [],
|
||||||
tomorrow: body.tomorrow
|
created_at: new Date().toISOString()
|
||||||
}]);
|
};
|
||||||
|
|
||||||
if (error) {
|
const briefs = getBriefs();
|
||||||
console.error("Supabase error:", error);
|
briefs.unshift(brief);
|
||||||
return NextResponse.json({ error: error.message }, { status: 500 });
|
saveBriefs(briefs);
|
||||||
}
|
|
||||||
|
|
||||||
|
// Send to Discord
|
||||||
const discordMessage = formatEODBrief(body);
|
const discordMessage = formatEODBrief(body);
|
||||||
await fetch(`https://discord.com/api/v10/channels/${EOD_CHANNEL}/messages`, {
|
await fetch(`https://discord.com/api/v10/channels/${EOD_CHANNEL}/messages`, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
@@ -62,8 +77,9 @@ export async function POST(request: NextRequest) {
|
|||||||
body: JSON.stringify({ content: discordMessage }),
|
body: JSON.stringify({ content: discordMessage }),
|
||||||
});
|
});
|
||||||
|
|
||||||
return NextResponse.json({ success: true, message: "EOD brief saved and sent to Discord" });
|
return NextResponse.json({ success: true, brief });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return NextResponse.json({ error: "Failed" }, { status: 500 });
|
console.error("EOD brief error:", error);
|
||||||
|
return NextResponse.json({ error: "Failed to save brief" }, { status: 500 });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+41
-28
@@ -1,9 +1,32 @@
|
|||||||
import { NextRequest, NextResponse } from "next/server";
|
import { NextRequest, NextResponse } from "next/server";
|
||||||
import { supabase } from "@/lib/supabase";
|
import fs from "fs";
|
||||||
|
import path from "path";
|
||||||
|
|
||||||
|
const STORAGE_FILE = path.join(process.cwd(), "data", "morning_briefs.json");
|
||||||
|
|
||||||
const DISCORD_BOT_TOKEN = process.env.DISCORD_BOT_TOKEN || "MTQ3MTk4OTUzNjE1MzQwMzU5Nw.Ghtj4n.g-tl-Ijhfn9cg6zUCUIVd94EdwL32KmlVgRoSc";
|
const DISCORD_BOT_TOKEN = process.env.DISCORD_BOT_TOKEN || "MTQ3MTk4OTUzNjE1MzQwMzU5Nw.Ghtj4n.g-tl-Ijhfn9cg6zUCUIVd94EdwL32KmlVgRoSc";
|
||||||
const MORNING_CHANNEL = "1476344610493042698";
|
const MORNING_CHANNEL = "1476344610493042698";
|
||||||
|
|
||||||
|
function ensureStorage() {
|
||||||
|
const dir = path.dirname(STORAGE_FILE);
|
||||||
|
if (!fs.existsSync(dir)) {
|
||||||
|
fs.mkdirSync(dir, { recursive: true });
|
||||||
|
}
|
||||||
|
if (!fs.existsSync(STORAGE_FILE)) {
|
||||||
|
fs.writeFileSync(STORAGE_FILE, "[]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getBriefs() {
|
||||||
|
ensureStorage();
|
||||||
|
return JSON.parse(fs.readFileSync(STORAGE_FILE, "utf-8"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveBriefs(data: any[]) {
|
||||||
|
ensureStorage();
|
||||||
|
fs.writeFileSync(STORAGE_FILE, JSON.stringify(data, null, 2));
|
||||||
|
}
|
||||||
|
|
||||||
function formatMorningBrief(data: any): string {
|
function formatMorningBrief(data: any): string {
|
||||||
return `☀️ MORNING BRIEF - ${data.date || new Date().toISOString().split('T')[0]}
|
return `☀️ MORNING BRIEF - ${data.date || new Date().toISOString().split('T')[0]}
|
||||||
|
|
||||||
@@ -25,38 +48,28 @@ ${(data.leads || []).map((l: string) => `- ${l}`).join('\n')}`;
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function GET() {
|
export async function GET() {
|
||||||
const { data, error } = await supabase
|
const briefs = getBriefs();
|
||||||
.from("morning_briefs")
|
return NextResponse.json(briefs);
|
||||||
.select("*")
|
|
||||||
.order("created_at", { ascending: false })
|
|
||||||
.limit(20);
|
|
||||||
|
|
||||||
if (error) {
|
|
||||||
return NextResponse.json({ error: error.message }, { status: 500 });
|
|
||||||
}
|
|
||||||
return NextResponse.json(data || []);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function POST(request: NextRequest) {
|
export async function POST(request: NextRequest) {
|
||||||
try {
|
try {
|
||||||
const body = await request.json();
|
const body = await request.json();
|
||||||
|
|
||||||
// Save to Supabase
|
const brief = {
|
||||||
const { data, error } = await supabase
|
id: `morning-${Date.now()}`,
|
||||||
.from("morning_briefs")
|
date: body.date || new Date().toISOString().split('T')[0],
|
||||||
.insert([{
|
weather: body.weather,
|
||||||
date: body.date || new Date().toISOString().split('T')[0],
|
market: body.market,
|
||||||
weather: body.weather,
|
priorities: body.priorities || [],
|
||||||
market: body.market,
|
goal: body.goal,
|
||||||
priorities: body.priorities,
|
leads: body.leads || [],
|
||||||
goal: body.goal,
|
created_at: new Date().toISOString()
|
||||||
leads: body.leads
|
};
|
||||||
}]);
|
|
||||||
|
|
||||||
if (error) {
|
const briefs = getBriefs();
|
||||||
console.error("Supabase error:", error);
|
briefs.unshift(brief);
|
||||||
return NextResponse.json({ error: error.message }, { status: 500 });
|
saveBriefs(briefs);
|
||||||
}
|
|
||||||
|
|
||||||
// Send to Discord
|
// Send to Discord
|
||||||
const discordMessage = formatMorningBrief(body);
|
const discordMessage = formatMorningBrief(body);
|
||||||
@@ -69,9 +82,9 @@ export async function POST(request: NextRequest) {
|
|||||||
body: JSON.stringify({ content: discordMessage }),
|
body: JSON.stringify({ content: discordMessage }),
|
||||||
});
|
});
|
||||||
|
|
||||||
return NextResponse.json({ success: true, message: "Morning brief saved and sent to Discord" });
|
return NextResponse.json({ success: true, brief });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error:", error);
|
console.error("Morning brief error:", error);
|
||||||
return NextResponse.json({ error: "Failed to save brief" }, { status: 500 });
|
return NextResponse.json({ error: "Failed to save brief" }, { status: 500 });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
Reference in New Issue
Block a user