diff --git a/alembic/versions/45957f0a9849_add_notebook_table.py b/alembic/versions/45957f0a9849_add_notebook_table.py new file mode 100644 index 000000000..ded7ccd9c --- /dev/null +++ b/alembic/versions/45957f0a9849_add_notebook_table.py @@ -0,0 +1,46 @@ +"""Add notebook table + +Revision ID: 45957f0a9849 +Revises: 9e7a3cb85175 +Create Date: 2025-09-10 17:47:58.201319 + +""" + +from datetime import datetime, timezone +from uuid import uuid4 +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = "45957f0a9849" +down_revision: Union[str, None] = "9e7a3cb85175" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + bind = op.get_bind() + inspector = sa.inspect(bind) + + if "notebooks" not in inspector.get_table_names(): + # Define table with all necessary columns including primary key + op.create_table( + "notebooks", + sa.Column("id", sa.UUID, primary_key=True, default=uuid4), # Critical for SQLite + sa.Column("owner_id", sa.UUID, index=True), + sa.Column("name", sa.String(), nullable=False), + sa.Column("cells", sa.JSON(), nullable=False), + sa.Column("deletable", sa.Boolean(), default=True), + sa.Column("created_at", sa.DateTime(), default=lambda: datetime.now(timezone.utc)), + ) + + +def downgrade() -> None: + bind = op.get_bind() + inspector = sa.inspect(bind) + + if "notebooks" in inspector.get_table_names(): + op.drop_table("notebooks") diff --git a/cognee-frontend/src/app/dashboard/AddDataToCognee.tsx b/cognee-frontend/src/app/dashboard/AddDataToCognee.tsx index a74547b5e..4f9a3179e 100644 --- a/cognee-frontend/src/app/dashboard/AddDataToCognee.tsx +++ b/cognee-frontend/src/app/dashboard/AddDataToCognee.tsx @@ -39,7 +39,8 @@ export default function AddDataToCognee({ datasets, refreshDatasets, useCloud = } : { name: "main_dataset", }, - Array.from(filesForUpload) + Array.from(filesForUpload), + useCloud ) .then(({ dataset_id, dataset_name }) => { refreshDatasets(); diff --git a/cognee-frontend/src/app/dashboard/Dashboard.tsx b/cognee-frontend/src/app/dashboard/Dashboard.tsx index a785f8e00..97576f3b4 100644 --- a/cognee-frontend/src/app/dashboard/Dashboard.tsx +++ b/cognee-frontend/src/app/dashboard/Dashboard.tsx @@ -5,16 +5,31 @@ import { useCallback, useEffect, useRef, useState } from "react"; import { Header } from "@/ui/Layout"; import { SearchIcon } from "@/ui/Icons"; import { Notebook } from "@/ui/elements"; +import { fetch, isCloudEnvironment } from "@/utils"; import { Notebook as NotebookType } from "@/ui/elements/Notebook/types"; +import { useAuthenticatedUser } from "@/modules/auth"; import { Dataset } from "@/modules/ingestion/useDatasets"; import useNotebooks from "@/modules/notebooks/useNotebooks"; +import AddDataToCognee from "./AddDataToCognee"; import NotebooksAccordion from "./NotebooksAccordion"; import CogneeInstancesAccordion from "./CogneeInstancesAccordion"; -import AddDataToCognee from "./AddDataToCognee"; import InstanceDatasetsAccordion from "./InstanceDatasetsAccordion"; -export default function Dashboard() { +interface DashboardProps { + user?: { + id: string; + name: string; + email: string; + picture: string; + }; + accessToken: string; +} + +export default function Dashboard({ accessToken }: DashboardProps) { + fetch.setAccessToken(accessToken); + const { user } = useAuthenticatedUser(); + const { notebooks, refreshNotebooks, @@ -91,6 +106,8 @@ export default function Dashboard() { setDatasets(datasets); }, []); + const isCloudEnv = isCloudEnvironment(); + return (