From ec03b818f37e9da7576aa091224208d4e52be134 Mon Sep 17 00:00:00 2001 From: arkohut <39525455+arkohut@users.noreply.github.com> Date: Sat, 1 Jun 2024 13:13:35 +0800 Subject: [PATCH] feat: create and bind plugin to library --- memos/crud.py | 19 +++++++++++++++++-- memos/server.py | 18 ++++++------------ 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/memos/crud.py b/memos/crud.py index a0d378e..a6baa3d 100644 --- a/memos/crud.py +++ b/memos/crud.py @@ -1,6 +1,6 @@ from sqlalchemy.orm import Session -from .schemas import Library, NewLibraryParam, Folder, NewEntityParam, Entity -from .models import LibraryModel, FolderModel, EntityModel, EntityModel +from .schemas import Library, NewLibraryParam, Folder, NewEntityParam, Entity, Plugin, NewPluginParam +from .models import LibraryModel, FolderModel, EntityModel, EntityModel, PluginModel, LibraryPluginModel def get_library_by_id(library_id: int, db: Session) -> Library | None: @@ -35,3 +35,18 @@ def create_entity(library_id: int, entity: NewEntityParam, db: Session) -> Entit db.commit() db.refresh(db_entity) return db_entity + + +def create_plugin(newPlugin: NewPluginParam, db: Session) -> Plugin: + db_plugin = PluginModel(**newPlugin.model_dump(mode='json')) + db.add(db_plugin) + db.commit() + db.refresh(db_plugin) + return db_plugin + + +def add_plugin_to_library(library_id: int, plugin_id: int, db: Session): + library_plugin = LibraryPluginModel(library_id=library_id, plugin_id=plugin_id) + db.add(library_plugin) + db.commit() + db.refresh(library_plugin) diff --git a/memos/server.py b/memos/server.py index 5a6ed63..878f6ce 100644 --- a/memos/server.py +++ b/memos/server.py @@ -6,7 +6,7 @@ from sqlalchemy.orm import sessionmaker from typing import List from .config import get_database_path -from .crud import get_library_by_id, create_library, create_entity +from .crud import get_library_by_id, create_library, create_entity, create_plugin, add_plugin_to_library from .schemas import ( Library, Folder, @@ -64,22 +64,16 @@ def new_entity( @app.post("/plugins", response_model=Plugin) -def new_plugin(plugin: NewPluginParam, db: Session = Depends(get_db)): - db_plugin = Plugin(**plugin.model_dump()) - db.add(db_plugin) - db.commit() - db.refresh(db_plugin) - return db_plugin +def new_plugin(new_plugin: NewPluginParam, db: Session = Depends(get_db)): + plugin = create_plugin(new_plugin, db) + return plugin @app.post("/libraries/{library_id}/plugins", status_code=status.HTTP_204_NO_CONTENT) def add_library_plugin( - library_id: int, plugin: NewLibraryPluginParam, db: Session = Depends(get_db) + library_id: int, new_plugin: NewLibraryPluginParam, db: Session = Depends(get_db) ): - db_library_plugin = LibrayPlugin(library_id=library_id, plugin_id=plugin.plugin_id) - db.add(db_library_plugin) - db.commit() - db.refresh(db_library_plugin) + add_plugin_to_library(library_id, new_plugin.plugin_id, db) def run_server():