feat: create and bind plugin to library

This commit is contained in:
arkohut 2024-06-01 13:13:35 +08:00
parent 121c8c51b1
commit ec03b818f3
2 changed files with 23 additions and 14 deletions

View File

@ -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)

View File

@ -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():