diff options
| author | yxshv <[email protected]> | 2024-04-11 22:27:42 +0530 |
|---|---|---|
| committer | yxshv <[email protected]> | 2024-04-11 22:27:42 +0530 |
| commit | 43005b30e636b3f7e62f764f4fe567a83e59ab78 (patch) | |
| tree | 14abd13f6bc337878508f798d9351c045c881158 /apps/web/src | |
| parent | update sql queries (diff) | |
| download | supermemory-43005b30e636b3f7e62f764f4fe567a83e59ab78.tar.xz supermemory-43005b30e636b3f7e62f764f4fe567a83e59ab78.zip | |
sql queries
Diffstat (limited to 'apps/web/src')
| -rw-r--r-- | apps/web/src/actions/db.ts | 28 | ||||
| -rw-r--r-- | apps/web/src/app/page.tsx | 6 |
2 files changed, 33 insertions, 1 deletions
diff --git a/apps/web/src/actions/db.ts b/apps/web/src/actions/db.ts index 0b5bbaf6..46e3ddf6 100644 --- a/apps/web/src/actions/db.ts +++ b/apps/web/src/actions/db.ts @@ -7,10 +7,36 @@ import { StoredContent, storedContent, users, + space } from "@/server/db/schema"; -import { like, eq, and } from "drizzle-orm"; +import { like, eq, and, sql } from "drizzle-orm"; +import { union } from "drizzle-orm/sqlite-core" import { auth as authOptions } from "@/server/auth"; +// @todo: (future) pagination not yet needed +export async function searchMemoriesAndSpaces(userId: string, query: string) { + const searchMemoriesQuery = db.select({ + type: sql<string>`'memory'`, + space: sql`NULL`, + memory: storedContent as any + }).from(storedContent).where(and( + eq(storedContent.user, userId), + like(storedContent.title, `%${query}%`) + )) + + const searchSpacesQuery = db.select({ + type: sql<string>`'space'`, + space: space as any, + memory: sql`NULL`, + }).from(space).where( + and( + eq(space.user, userId), + like(space.name, `%${query}%`) + ) + ) + + return await union(searchMemoriesQuery, searchSpacesQuery) +} async function getUser() { const token = diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx index f3dc1bd4..97997d12 100644 --- a/apps/web/src/app/page.tsx +++ b/apps/web/src/app/page.tsx @@ -13,6 +13,7 @@ import { redirect } from "next/navigation"; import { fetchContentForSpace, fetchFreeMemories, transformContent } from "../../types/memory"; import { MemoryProvider } from "@/contexts/MemoryContext"; import Content from "./content"; +import { searchMemoriesAndSpaces } from "@/actions/db"; export const runtime = "edge"; @@ -68,6 +69,11 @@ export default async function Home() { // freeMemories const freeMemories = await fetchFreeMemories(userData.id) + // @dhravya test these 3 functions + fetchFreeMemories + fetchContentForSpace + searchMemoriesAndSpaces + collectedSpaces.push({ id: 1, name: "Cool tech", |