diff --git a/backend/app/api/api_v1/routers/platform.py b/backend/app/api/api_v1/routers/platform.py index 53937a6..9bfa1b3 100644 --- a/backend/app/api/api_v1/routers/platform.py +++ b/backend/app/api/api_v1/routers/platform.py @@ -9,6 +9,35 @@ from app.core.apiexception import APIException platform_router = r = APIRouter() + +@r.get( + "/apps", + response_model=List[AppList], + response_model_exclude_none=True, +) +async def apps_list( + request: Request, + db=Depends(get_db), +): + try: + app = get_apps(db) + return app + except Exception as e: + raise APIException('platform:apps',request.url._url,f"Error occurred while get apps:",e) + +@r.post("/apps", response_model=AppList, response_model_exclude_none=True) +async def apps_update( + request: Request, + app: AppVersion, + user=Depends(get_current_user), + db=Depends(get_db), +): + try: + return update_appversion(db, app,user.id) + except Exception as e: + raise APIException('platform:apps',request.url._url,f"Error occurred while get create app :",e) + + @r.get( "/appsettings/{id}", response_model=App, diff --git a/backend/app/db/crud.py b/backend/app/db/crud.py index c26073b..0e91984 100644 --- a/backend/app/db/crud.py +++ b/backend/app/db/crud.py @@ -69,6 +69,29 @@ def edit_user( db.refresh(db_user) return db_user +def get_apps( + db: Session +) -> t.List[schemas.AppList]: + return db.query(models.App).all() + +def update_appversion(db: Session, appedit: schemas.AppVersion,userid:int): + app = db.query(models.App).filter(and_(models.App.domainurl == appedit.domainurl,models.App.appid == appedit.appid)).first() + if app: + app.version = app.version + 1 + db_app = app + else: + db_app = models.App( + domainurl = appedit.domainurl, + appid=appedit.appid, + appname=appedit.appname, + version = 1, + updateuser= userid + ) + + db.add(db_app) + db.commit() + db.refresh(db_app) + return db_app def get_appsetting(db: Session, id: int): app = db.query(models.AppSetting).get(id) diff --git a/backend/app/db/models.py b/backend/app/db/models.py index b49b0d3..788877c 100644 --- a/backend/app/db/models.py +++ b/backend/app/db/models.py @@ -1,5 +1,6 @@ from sqlalchemy import Boolean, Column, Integer, String, DateTime,ForeignKey from sqlalchemy.ext.declarative import as_declarative +from sqlalchemy.orm import relationship from datetime import datetime from app.core.security import chacha20Decrypt @@ -20,6 +21,16 @@ class User(Base): is_active = Column(Boolean, default=True) is_superuser = Column(Boolean, default=False) +class App(Base): + __tablename__ = "app" + + domainurl = Column(String(200), nullable=False) + appname = Column(String(200), nullable=False) + appid = Column(String(100), index=True, nullable=False) + version = Column(Integer) + updateuser = Column(Integer,ForeignKey("user.id")) + user = relationship('User') + class AppSetting(Base): __tablename__ = "appsetting" diff --git a/backend/app/db/schemas.py b/backend/app/db/schemas.py index e03eea5..232bd53 100644 --- a/backend/app/db/schemas.py +++ b/backend/app/db/schemas.py @@ -28,21 +28,21 @@ class UserCreate(UserBase): is_active:bool is_superuser:bool - class Config: + class ConfigDict: orm_mode = True class UserEdit(UserBase): password: t.Optional[str] = None - class Config: + class ConfigDict: orm_mode = True class User(UserBase): id: int - class Config: + class ConfigDict: orm_mode = True @@ -50,6 +50,17 @@ class Token(BaseModel): access_token: str token_type: str +class AppList(Base): + domainurl: str + appname: str + appid:str + version:int + user:UserOut + +class AppVersion(BaseModel): + domainurl: str + appname: str + appid:str class TokenData(BaseModel): id:int = 0 @@ -68,7 +79,7 @@ class AppBase(BaseModel): class App(AppBase): id: int - class Config: + class ConfigDict: orm_mode = True @@ -79,7 +90,7 @@ class Kintone(BaseModel): desc: str = None content: str = None - class Config: + class ConfigDict: orm_mode = True class Action(BaseModel): @@ -92,7 +103,7 @@ class Action(BaseModel): categoryid: int = None nosort: int categoryname : str =None - class Config: + class ConfigDict: orm_mode = True class FlowBase(BaseModel): @@ -111,7 +122,7 @@ class Flow(Base): name: str = None content: str = None - class Config: + class ConfigDict: orm_mode = True class DomainBase(BaseModel): @@ -133,7 +144,7 @@ class Domain(Base): url: str kintoneuser: str kintonepwd: str - class Config: + class ConfigDict: orm_mode = True class Event(Base): @@ -145,7 +156,7 @@ class Event(Base): mobile: bool eventgroup: bool - class Config: + class ConfigDict: orm_mode = True class ErrorCreate(BaseModel): diff --git a/backend/requirements.txt b/backend/requirements.txt index adbe7e4..5e01eb3 100644 Binary files a/backend/requirements.txt and b/backend/requirements.txt differ