diff options
| author | Dhravya <[email protected]> | 2024-06-30 20:50:24 -0500 |
|---|---|---|
| committer | Dhravya <[email protected]> | 2024-06-30 20:50:24 -0500 |
| commit | ffd141ade4e6074ee486da7f74f31e3905807cb9 (patch) | |
| tree | 505d73b0a7c04cdec93d7f5be88c635642716c15 /apps/web/app/actions | |
| parent | show updates in the extension (diff) | |
| parent | Merge pull request #93 from Dhravya/editor (diff) | |
| download | archived-supermemory-ffd141ade4e6074ee486da7f74f31e3905807cb9.tar.xz archived-supermemory-ffd141ade4e6074ee486da7f74f31e3905807cb9.zip | |
merge conflicts
Diffstat (limited to 'apps/web/app/actions')
| -rw-r--r-- | apps/web/app/actions/doers.ts | 114 | ||||
| -rw-r--r-- | apps/web/app/actions/fetchers.ts | 69 |
2 files changed, 183 insertions, 0 deletions
diff --git a/apps/web/app/actions/doers.ts b/apps/web/app/actions/doers.ts index 8acc5679..98104ebd 100644 --- a/apps/web/app/actions/doers.ts +++ b/apps/web/app/actions/doers.ts @@ -3,6 +3,7 @@ import { revalidatePath } from "next/cache"; import { db } from "../../server/db"; import { + canvas, chatHistory, chatThreads, contentToSpace, @@ -435,3 +436,116 @@ export const linkTelegramToUser = async ( data: true, }; }; + +export const createCanvas = async () => { + const data = await auth(); + + if (!data || !data.user || !data.user.id) { + redirect("/signin"); + return { error: "Not authenticated", success: false }; + } + + const canvases = await db + .select() + .from(canvas) + .where(eq(canvas.userId, data.user.id)); + + if (canvases.length >= 5) { + return { + success: false, + message: "A user currently can only have 5 canvases", + }; + } + + const resp = await db + .insert(canvas) + .values({ userId: data.user.id }) + .returning({ id: canvas.id }); + redirect(`/canvas/${resp[0]!.id}`); + // TODO INVESTIGATE: NO REDIRECT INSIDE TRY CATCH BLOCK + // try { + // const resp = await db + // .insert(canvas) + // .values({ userId: data.user.id }).returning({id: canvas.id}); + // return redirect(`/canvas/${resp[0]!.id}`); + // } catch (e: unknown) { + // const error = e as Error; + // if ( + // error.message.includes("D1_ERROR: UNIQUE constraint failed: space.name") + // ) { + // return { success: false, data: 0, error: "Space already exists" }; + // } else { + // return { + // success: false, + // data: 0, + // error: "Failed to create space with error: " + error.message, + // }; + // } + // } +}; + +export const SaveCanvas = async ({ + id, + data, +}: { + id: string; + data: string; +}) => { + console.log({ id, data }); + try { + await process.env.CANVAS_SNAPS.put(id, data); + return { + success: true, + message: "in-sync", + }; + } catch (error) { + return { + success: false, + error, + message: "An error occured while saving your canvas", + }; + } +}; + +export const deleteCanvas = async (id: string) => { + try { + await process.env.CANVAS_SNAPS.delete(id); + await db.delete(canvas).where(eq(canvas.id, id)); + return { + success: true, + message: "in-sync", + }; + } catch (error) { + return { + success: false, + error, + message: "An error occured while saving your canvas", + }; + } +}; + +export async function AddCanvasInfo({ + id, + title, + description, +}: { + id: string; + title: string; + description: string; +}) { + try { + await db + .update(canvas) + .set({ description, title }) + .where(eq(canvas.id, id)); + return { + success: true, + message: "info updated successfully", + }; + } catch (error) { + return { + success: false, + message: "something went wrong :/", + }; + } +} diff --git a/apps/web/app/actions/fetchers.ts b/apps/web/app/actions/fetchers.ts index b9f6dc2a..a4cc9e95 100644 --- a/apps/web/app/actions/fetchers.ts +++ b/apps/web/app/actions/fetchers.ts @@ -3,6 +3,7 @@ import { and, asc, eq, inArray, not, sql } from "drizzle-orm"; import { db } from "../../server/db"; import { + canvas, chatHistory, ChatThread, chatThreads, @@ -223,3 +224,71 @@ export const getNoteFromId = async ( data: note, }; }; +export const getCanvas = async () => { + const data = await auth(); + + if (!data || !data.user || !data.user.id) { + redirect("/signin"); + return { error: "Not authenticated", success: false }; + } + + try { + const canvases = await db + .select() + .from(canvas) + .where(eq(canvas.userId, data.user.id)); + + return { + success: true, + data: canvases.map(({ userId, ...rest }) => rest), + }; + } catch (e) { + return { + success: false, + error: (e as Error).message, + }; + } +}; + +export const userHasCanvas = async (canvasId: string) => { + const data = await auth(); + + if (!data || !data.user || !data.user.id) { + redirect("/signin"); + return { error: "Not authenticated", success: false }; + } + + try { + const canvases = await db + .select() + .from(canvas) + .where(eq(canvas.userId, data.user.id)); + const exists = !!canvases.find((canvas) => canvas.id === canvasId); + return { + success: exists, + }; + } catch (e) { + return { + success: false, + error: (e as Error).message, + }; + } +}; + +export const getCanvasData = async (canvasId: string) => { + const data = await auth(); + + if (!data || !data.user || !data.user.id) { + redirect("/signin"); + return { error: "Not authenticated", success: false }; + } + + const canvas = await process.env.CANVAS_SNAPS.get(canvasId); + + console.log({ canvas, canvasId }); + if (canvas) { + return JSON.parse(canvas); + } else { + return { snapshot: {} }; + } +}; |