New API + API Token Updates

This commit is contained in:
2026-01-16 13:20:11 -07:00
parent 756ab2a38f
commit 4412229990
26 changed files with 1661 additions and 1012 deletions

View File

@@ -1,34 +1,43 @@
import type { APIRoute } from 'astro';
import { db } from '../../../../db';
import { timeEntries } from '../../../../db/schema';
import { eq, and } from 'drizzle-orm';
import type { APIRoute } from "astro";
import { db } from "../../../../db";
import { timeEntries } from "../../../../db/schema";
import { eq, and } from "drizzle-orm";
export const POST: APIRoute = async ({ params, locals, redirect }) => {
const user = locals.user;
if (!user) {
return new Response(JSON.stringify({ error: 'Unauthorized' }), { status: 401 });
return new Response(JSON.stringify({ error: "Unauthorized" }), {
status: 401,
});
}
const entryId = params.id;
if (!entryId) {
return new Response(JSON.stringify({ error: 'Entry ID required' }), { status: 400 });
return new Response(JSON.stringify({ error: "Entry ID required" }), {
status: 400,
});
}
const entry = await db.select()
const entry = await db
.select()
.from(timeEntries)
.where(and(
eq(timeEntries.id, entryId),
eq(timeEntries.userId, user.id)
))
.where(and(eq(timeEntries.id, entryId), eq(timeEntries.userId, user.id)))
.get();
if (!entry) {
return new Response(JSON.stringify({ error: 'Entry not found' }), { status: 404 });
return new Response(JSON.stringify({ error: "Entry not found" }), {
status: 404,
});
}
await db.delete(timeEntries)
.where(eq(timeEntries.id, entryId))
.run();
await db.delete(timeEntries).where(eq(timeEntries.id, entryId)).run();
return redirect('/dashboard/tracker');
if (locals.scopes) {
return new Response(JSON.stringify({ success: true }), {
status: 200,
headers: { "Content-Type": "application/json" },
});
}
return redirect("/dashboard/tracker");
};