From ada06b06df1d1ab6cbcaf0967c06669093e90008 Mon Sep 17 00:00:00 2001 From: Michael Zhang Date: Fri, 26 Jul 2024 21:48:51 -0500 Subject: [PATCH] journal work --- apps/journal/.gitignore | 1 + apps/journal/bun.lockb | Bin 0 -> 23586 bytes apps/journal/index.ts | 41 ++++++++++++++++++++ apps/journal/manifest.yml | 10 +++++ apps/journal/package.json | 9 +++++ packages/panorama-daemon/bun.lockb | Bin 112900 -> 113676 bytes packages/panorama-daemon/src/routes/node.ts | 8 +++- ui/src/App.tsx | 4 +- ui/src/components/SearchBar.tsx | 1 - 9 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 apps/journal/.gitignore create mode 100755 apps/journal/bun.lockb create mode 100644 apps/journal/index.ts create mode 100644 apps/journal/manifest.yml create mode 100644 apps/journal/package.json diff --git a/apps/journal/.gitignore b/apps/journal/.gitignore new file mode 100644 index 0000000..945ce43 --- /dev/null +++ b/apps/journal/.gitignore @@ -0,0 +1 @@ +index.js \ No newline at end of file diff --git a/apps/journal/bun.lockb b/apps/journal/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..4db7ec5787760e21306e0dd479cb406d8fbc0101 GIT binary patch literal 23586 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 literal 0 HcmV?d00001 diff --git a/apps/journal/index.ts b/apps/journal/index.ts new file mode 100644 index 0000000..08766d5 --- /dev/null +++ b/apps/journal/index.ts @@ -0,0 +1,41 @@ +import type { Context } from "koa"; +import { formatDate } from "date-fns"; +import { uuidv7 } from "uuidv7"; + +export async function today(ctx: Context) { + const date = new Date(); + const day = formatDate(date, "P"); + + const resp = await fetch("http://localhost:3000/node/sql", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + query: ` + select * from node_has_attribute as na + join attribute as a on na.attrName = a.name + where a.name = 'day' and na.string = '${day}'; + `, + parameters: [], + }), + }); + + const { rows } = await resp.json(); + if (rows.length === 0) { + const id = uuidv7(); + const resp = await fetch("http://localhost:3000/node/sql", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + query: ` + begin transaction; + insert into node (id) values (?); + end transaction; + `, + parameters: [id], + }), + }); + const data = await resp.json(); + console.log("Result", data); + } + ctx.body = {}; +} diff --git a/apps/journal/manifest.yml b/apps/journal/manifest.yml new file mode 100644 index 0000000..e4d483f --- /dev/null +++ b/apps/journal/manifest.yml @@ -0,0 +1,10 @@ +name: panorama/journal +code: index.js + +attributes: +- name: day + type: Option + +endpoints: +- route: /today + handler: today \ No newline at end of file diff --git a/apps/journal/package.json b/apps/journal/package.json new file mode 100644 index 0000000..420e379 --- /dev/null +++ b/apps/journal/package.json @@ -0,0 +1,9 @@ +{ + "dependencies": { + "date-fns": "^3.6.0", + "koa": "^2.15.3" + }, + "devDependencies": { + "@types/koa": "^2.15.0" + } +} diff --git a/packages/panorama-daemon/bun.lockb b/packages/panorama-daemon/bun.lockb index d27c17fb1fa55db0206157963e023c7e8cfd5499..a731329864fb5eb3133477cc4ca7251496dc9c15 100755 GIT binary patch delta 17143 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 delta 16785 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 diff --git a/packages/panorama-daemon/src/routes/node.ts b/packages/panorama-daemon/src/routes/node.ts index fae71af..8764b43 100644 --- a/packages/panorama-daemon/src/routes/node.ts +++ b/packages/panorama-daemon/src/routes/node.ts @@ -75,7 +75,13 @@ nodeRouter.put("/", async (ctx) => { ctx.body = { id }; }); -nodeRouter.post("/query", async (ctx) => {}); +// TODO: WILL BE REMOVED BEFORE ALPHA RELEASE +nodeRouter.post("/sql", async (ctx) => { + const body = ctx.request.body; + const { query, parameters } = body; + const rows = await dataSource.query(query, parameters ?? []); + ctx.body = { rows }; +}); nodeRouter.get("/recent", async (ctx) => { const result = await dataSource.query(` diff --git a/ui/src/App.tsx b/ui/src/App.tsx index c1523b3..7925387 100644 --- a/ui/src/App.tsx +++ b/ui/src/App.tsx @@ -19,8 +19,6 @@ const queryClient = new QueryClient(); TimeAgo.addDefaultLocale(en); -// export const nodesOpenedAtom = atom>(OrderedSet()); - function App() { const panelsOpened = useAtomValue(panelsOpenedAtom); const { openNode } = usePanelControls(); @@ -31,7 +29,7 @@ function App() { if (panelsOpened.size === 0) { console.log("Opening today's entry."); const resp = await fetch( - `${PANORAMA_DAEMON_URL}/journal/get_todays_journal_id`, + `${PANORAMA_DAEMON_URL}/apps/panorama__journal/today`, ); const data = await resp.json(); console.log("resp", data); diff --git a/ui/src/components/SearchBar.tsx b/ui/src/components/SearchBar.tsx index c746fcd..6abb271 100644 --- a/ui/src/components/SearchBar.tsx +++ b/ui/src/components/SearchBar.tsx @@ -11,7 +11,6 @@ import { } from "@floating-ui/react"; import { useCallback, useEffect, useState } from "react"; import { atom, useAtom, useSetAtom } from "jotai"; -import { useDebounce, useDebouncedCallback } from "use-debounce"; import { usePanelControls } from "../lib/panelManagement"; const searchQueryAtom = atom("");