diff options
| author | yxshv <[email protected]> | 2024-04-11 23:24:49 +0530 |
|---|---|---|
| committer | yxshv <[email protected]> | 2024-04-11 23:24:49 +0530 |
| commit | bf4eb4790dc736e2c0a0a8fa22dec100e9a4d366 (patch) | |
| tree | ff1f6affba378086f31f15623d2caee5048b972b /apps/web | |
| parent | sql queries (diff) | |
| download | supermemory-bf4eb4790dc736e2c0a0a8fa22dec100e9a4d366.tar.xz supermemory-bf4eb4790dc736e2c0a0a8fa22dec100e9a4d366.zip | |
add search to context
Diffstat (limited to 'apps/web')
| -rw-r--r-- | apps/web/src/app/page.tsx | 2 | ||||
| -rw-r--r-- | apps/web/src/contexts/MemoryContext.tsx | 60 | ||||
| -rw-r--r-- | apps/web/src/server/db/schema.ts | 2 |
3 files changed, 38 insertions, 26 deletions
diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx index 97997d12..55397545 100644 --- a/apps/web/src/app/page.tsx +++ b/apps/web/src/app/page.tsx @@ -81,7 +81,7 @@ export default async function Home() { }); return ( - <MemoryProvider spaces={collectedSpaces} freeMemories={freeMemories} cachedMemories={contents}> + <MemoryProvider user={userData} spaces={collectedSpaces} freeMemories={freeMemories} cachedMemories={contents}> <Content jwt={token} /> {/* <MessagePoster jwt={token} /> */} </MemoryProvider> diff --git a/apps/web/src/contexts/MemoryContext.tsx b/apps/web/src/contexts/MemoryContext.tsx index 46242a63..aa9cab81 100644 --- a/apps/web/src/contexts/MemoryContext.tsx +++ b/apps/web/src/contexts/MemoryContext.tsx @@ -2,7 +2,14 @@ import React, { useCallback } from "react"; import { CollectedSpaces } from "../../types/memory"; import { StoredContent, storedContent, StoredSpace } from "@/server/db/schema"; -import { addMemory } from "@/actions/db"; +import { addMemory, searchMemoriesAndSpaces } from "@/actions/db"; +import { User } from "next-auth"; + +export type SearchResult = { + type: "memory" | "space", + space: StoredSpace, + memory: StoredContent +} // temperory (will change) export const MemoryContext = React.createContext<{ @@ -15,6 +22,7 @@ export const MemoryContext = React.createContext<{ spaces?: number[], ) => Promise<void>; cachedMemories: StoredContent[]; + search: (query: string) => Promise<SearchResult[]>; }>({ spaces: [], freeMemories: [], @@ -22,15 +30,17 @@ export const MemoryContext = React.createContext<{ addSpace: async () => {}, deleteSpace: async () => {}, cachedMemories: [], + search: async () => [] }); export const MemoryProvider: React.FC< { spaces: StoredSpace[]; freeMemories: StoredContent[]; - cachedMemories: StoredContent[] + cachedMemories: StoredContent[]; + user: User; } & React.PropsWithChildren -> = ({ children, spaces: initalSpaces, freeMemories: initialFreeMemories, cachedMemories: initialCachedMemories }) => { +> = ({ children, user, spaces: initalSpaces, freeMemories: initialFreeMemories, cachedMemories: initialCachedMemories }) => { const [spaces, setSpaces] = React.useState<StoredSpace[]>(initalSpaces); const [freeMemories, setFreeMemories] = @@ -40,37 +50,37 @@ export const MemoryProvider: React.FC< initialCachedMemories ); - const addSpace = useCallback( - async (space: StoredSpace) => { - setSpaces((prev) => [...prev, space]); - }, - [spaces], - ); - const deleteSpace = useCallback( - async (id: number) => { - setSpaces((prev) => prev.filter((s) => s.id !== id)); - }, - [spaces], - ); + const addSpace = async (space: StoredSpace) => { + setSpaces((prev) => [...prev, space]); + } + + const deleteSpace = async (id: number) => { + setSpaces((prev) => prev.filter((s) => s.id !== id)); + } + + const search = async (query: string) => { + if (!user.id) { + throw new Error('user id is not define') + } + const data = await searchMemoriesAndSpaces(user.id, query) + return data as SearchResult[] + } // const fetchMemories = useCallback(async (query: string) => { // const response = await fetch(`/api/memories?${query}`); // }, []); - const _addMemory = useCallback( - async ( - memory: typeof storedContent.$inferInsert, - spaces: number[] = [], - ) => { - const content = await addMemory(memory, spaces); - console.log(content); - }, - [freeMemories, spaces], - ); + const _addMemory = async ( + memory: typeof storedContent.$inferInsert, + spaces: number[] = [], + ) => { + const content = await addMemory(memory, spaces); + } return ( <MemoryContext.Provider value={{ + search, spaces, addSpace, deleteSpace, diff --git a/apps/web/src/server/db/schema.ts b/apps/web/src/server/db/schema.ts index c66cb590..daac595c 100644 --- a/apps/web/src/server/db/schema.ts +++ b/apps/web/src/server/db/schema.ts @@ -21,6 +21,8 @@ export const users = createTable("user", { image: text("image", { length: 255 }), }); +export type User = typeof users.$inferSelect + export const usersRelations = relations(users, ({ many }) => ({ accounts: many(accounts), sessions: many(sessions), |