This commit is contained in:
Dhravya 2024-04-12 18:49:11 -07:00
commit dcf166fdee
3 changed files with 88 additions and 30 deletions

View file

@ -1,9 +1,13 @@
import { type Config } from "drizzle-kit";
const localDb = {
url: process.env.LOCAL_DB_URL!
}
export default {
schema: "./src/server/db/schema.ts",
driver: "d1",
dbCredentials: {
driver: process.env.LOCAL_DB_URL ? "better-sqlite" : "d1",
dbCredentials: process.env.LOCAL_DB_URL ? localDb : {
wranglerConfigPath: "./wrangler.toml",
dbName: "dev-d1-anycontext",
},

View file

@ -0,0 +1,70 @@
import { db } from "@/server/db";
import { sessions, space, users } from "@/server/db/schema";
import { eq } from "drizzle-orm";
import { NextRequest, NextResponse } from "next/server";
export async function GET(req: NextRequest) {
const token =
req.cookies.get("next-auth.session-token")?.value ??
req.cookies.get("__Secure-authjs.session-token")?.value ??
req.cookies.get("authjs.session-token")?.value ??
req.headers.get("Authorization")?.replace("Bearer ", "");
if (!token) {
return new Response(
JSON.stringify({ message: "Invalid Key, session not found." }),
{ status: 404 },
);
}
if (process.env.RATELIMITER) {
const { success } = await process.env.RATELIMITER.limit({ key: token });
if (!success) {
return new Response(JSON.stringify({ message: "Rate limit exceeded" }), {
status: 429,
});
}
}
const sessionData = await db
.select()
.from(sessions)
.where(eq(sessions.sessionToken, token!));
if (!sessionData || sessionData.length === 0) {
return new Response(
JSON.stringify({ message: "Invalid Key, session not found." }),
{ status: 404 },
);
}
const userData = await db
.select()
.from(users)
.where(eq(users.id, sessionData[0].userId))
.limit(1);
if (!userData || userData.length === 0) {
return NextResponse.json(
{ message: "Invalid Key, session not found." },
{ status: 404 },
);
}
const user = userData[0]
const spaces = await db
.select()
.from(space)
.where(eq(space.user, user.id))
.all()
return NextResponse.json({
message: "OK",
data: spaces
}, { status: 200 })
}

View file

@ -1,5 +1,5 @@
import { db } from "@/server/db";
import { and, eq, sql } from "drizzle-orm";
import { and, eq, sql, inArray } from "drizzle-orm";
import {
contentToSpace,
sessions,
@ -67,17 +67,15 @@ export async function POST(req: NextRequest) {
const data = (await req.json()) as {
pageContent: string;
url: string;
space?: string;
spaces?: string[];
};
const metadata = await getMetaData(data.url);
let id: number | undefined = undefined;
let storeToSpaces = data.spaces;
let storeToSpace = data.space;
if (!storeToSpace) {
storeToSpace = "none";
if (!storeToSpaces) {
storeToSpaces = [];
}
const count = await db
@ -89,7 +87,7 @@ export async function POST(req: NextRequest) {
console.log("count", count[0].count);
const storedContentId = await db.insert(storedContent).values({
const { id } = (await db.insert(storedContent).values({
content: data.pageContent,
title: metadata.title,
description: metadata.description,
@ -98,9 +96,7 @@ export async function POST(req: NextRequest) {
image: metadata.image,
savedAt: new Date(),
user: session.user.id,
});
id = storedContentId.meta.last_row_id;
}).returning({ id: storedContent.id }))[0];
if (!id) {
return NextResponse.json(
@ -109,27 +105,15 @@ export async function POST(req: NextRequest) {
);
}
let spaceID = 0;
const spaceData = await db
.select()
.from(space)
.where(and(eq(space.name, storeToSpace), eq(space.user, session.user.id)))
.limit(1);
spaceID = spaceData[0]?.id;
.where(and(inArray(space.name, storeToSpaces), eq(space.user, session.user.id)))
.all()
if (!spaceData || spaceData.length === 0) {
const spaceId = await db.insert(space).values({
name: storeToSpace,
user: session.user.id,
});
spaceID = spaceId.meta.last_row_id;
}
await db.insert(contentToSpace).values({
contentId: id as number,
spaceId: spaceID,
});
await Promise.all([spaceData.forEach(async space => {
await db.insert(contentToSpace).values({ contentId: id, spaceId: space.id })
})])
const res = (await Promise.race([
fetch("https://cf-ai-backend.dhravya.workers.dev/add", {