aboutsummaryrefslogtreecommitdiff
path: root/apps/web
diff options
context:
space:
mode:
authoryxshv <[email protected]>2024-04-11 23:24:49 +0530
committeryxshv <[email protected]>2024-04-11 23:24:49 +0530
commitbf4eb4790dc736e2c0a0a8fa22dec100e9a4d366 (patch)
treeff1f6affba378086f31f15623d2caee5048b972b /apps/web
parentsql queries (diff)
downloadsupermemory-bf4eb4790dc736e2c0a0a8fa22dec100e9a4d366.tar.xz
supermemory-bf4eb4790dc736e2c0a0a8fa22dec100e9a4d366.zip
add search to context
Diffstat (limited to 'apps/web')
-rw-r--r--apps/web/src/app/page.tsx2
-rw-r--r--apps/web/src/contexts/MemoryContext.tsx60
-rw-r--r--apps/web/src/server/db/schema.ts2
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),