aboutsummaryrefslogtreecommitdiff
path: root/apps/web/app/actions
diff options
context:
space:
mode:
authorDhravya <[email protected]>2024-06-30 20:50:24 -0500
committerDhravya <[email protected]>2024-06-30 20:50:24 -0500
commitffd141ade4e6074ee486da7f74f31e3905807cb9 (patch)
tree505d73b0a7c04cdec93d7f5be88c635642716c15 /apps/web/app/actions
parentshow updates in the extension (diff)
parentMerge pull request #93 from Dhravya/editor (diff)
downloadarchived-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.ts114
-rw-r--r--apps/web/app/actions/fetchers.ts69
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: {} };
+ }
+};