jwt&dbの操作 実装
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from fastapi import APIRouter, UploadFile,HTTPException,File
|
||||
from fastapi import Request,Depends, APIRouter, UploadFile,HTTPException,File
|
||||
from io import BytesIO
|
||||
import typing as t
|
||||
import pandas as pd
|
||||
@@ -7,6 +7,7 @@ import httpx
|
||||
import deepdiff
|
||||
import app.core.config as c
|
||||
|
||||
|
||||
kinton_router = r = APIRouter()
|
||||
|
||||
def getfieldsfromexcel(df):
|
||||
|
||||
67
backend/app/api/api_v1/routers/platform.py
Normal file
67
backend/app/api/api_v1/routers/platform.py
Normal file
@@ -0,0 +1,67 @@
|
||||
from fastapi import Request,Depends, APIRouter, UploadFile,HTTPException,File
|
||||
from app.db import Base,engine
|
||||
from app.db.session import get_db
|
||||
from app.db.crud import *
|
||||
from app.db.schemas import AppBase, AppEdit, App,Kintone
|
||||
|
||||
platform_router = r = APIRouter()
|
||||
|
||||
@r.get(
|
||||
"/appsettings/{id}",
|
||||
response_model=App,
|
||||
response_model_exclude_none=True,
|
||||
)
|
||||
async def appsetting_details(
|
||||
request: Request,
|
||||
id: int,
|
||||
db=Depends(get_db),
|
||||
):
|
||||
app = get_appsetting(db, id)
|
||||
return app
|
||||
|
||||
|
||||
@r.post("/appsettings", response_model=App, response_model_exclude_none=True)
|
||||
async def appsetting_create(
|
||||
request: Request,
|
||||
app: AppBase,
|
||||
db=Depends(get_db),
|
||||
):
|
||||
return create_appsetting(db, app)
|
||||
|
||||
|
||||
@r.put(
|
||||
"/appsettings/{id}", response_model=App, response_model_exclude_none=True
|
||||
)
|
||||
async def appsetting_edit(
|
||||
request: Request,
|
||||
id: int,
|
||||
app: AppEdit,
|
||||
db=Depends(get_db),
|
||||
):
|
||||
return edit_appsetting(db, id, app)
|
||||
|
||||
|
||||
@r.delete(
|
||||
"/appsettings/{id}", response_model=App, response_model_exclude_none=True
|
||||
)
|
||||
async def appsettings_delete(
|
||||
request: Request,
|
||||
id: int,
|
||||
db=Depends(get_db),
|
||||
):
|
||||
|
||||
return delete_appsetting(db, id)
|
||||
|
||||
|
||||
@r.get(
|
||||
"/kintone/{type}",
|
||||
response_model=t.List[Kintone],
|
||||
response_model_exclude_none=True,
|
||||
)
|
||||
async def kintone_data(
|
||||
request: Request,
|
||||
type: int,
|
||||
db=Depends(get_db),
|
||||
):
|
||||
kintone = get_kintones(db, type)
|
||||
return kintone
|
||||
@@ -2,7 +2,7 @@ import os
|
||||
|
||||
PROJECT_NAME = "KintoneAppBuilder"
|
||||
|
||||
SQLALCHEMY_DATABASE_URI = os.getenv("DATABASE_URL")
|
||||
SQLALCHEMY_DATABASE_URI = "mssql+pymssql://maxz64@maxzdb:m@xz1205@maxzdb.database.windows.net/alloc"
|
||||
|
||||
BASE_URL = "https://mfu07rkgnb7c.cybozu.com"
|
||||
|
||||
@@ -15,3 +15,4 @@ API_V1_AUTH_VALUE = "TVhaOm1heHoxMjA1"
|
||||
KINTONE_USER = "MXZ"
|
||||
|
||||
KINTONE_FIELD_TYPE=["GROUP","GROUP_SELECT","CHECK_BOX","SUBTABLE","DROP_DOWN","USER_SELECT","RADIO_BUTTON","RICH_TEXT","LINK","REFERENCE_TABLE","CALC","TIME","NUMBER","ORGANIZATION_SELECT","FILE","DATETIME","DATE","MULTI_SELECT","SINGLE_LINE_TEXT","MULTI_LINE_TEXT"]
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
from app.db.session import *
|
||||
from app.db.models import *
|
||||
@@ -67,3 +67,52 @@ def edit_user(
|
||||
db.commit()
|
||||
db.refresh(db_user)
|
||||
return db_user
|
||||
|
||||
|
||||
def get_appsetting(db: Session, id: int):
|
||||
app = db.query(models.AppSetting).get(id)
|
||||
if not app:
|
||||
raise HTTPException(status_code=404, detail="App not found")
|
||||
return app
|
||||
|
||||
def create_appsetting(db: Session, app: schemas.AppBase):
|
||||
db_app = models.AppSetting(
|
||||
appid=app.appid,
|
||||
setting=app.setting,
|
||||
)
|
||||
db.add(db_app)
|
||||
db.commit()
|
||||
db.refresh(db_app)
|
||||
return db_app
|
||||
|
||||
def delete_appsetting(db: Session, id: int):
|
||||
app = get_appsetting(db, id)
|
||||
if not app:
|
||||
raise HTTPException(status.HTTP_404_NOT_FOUND, detail="App not found")
|
||||
db.delete(app)
|
||||
db.commit()
|
||||
return app
|
||||
|
||||
|
||||
def edit_appsetting(
|
||||
db: Session, id: int, app: schemas.AppBase
|
||||
) -> schemas.App:
|
||||
db_app = get_appsetting(db, id)
|
||||
if not db_app:
|
||||
raise HTTPException(status.HTTP_404_NOT_FOUND, detail="App not found")
|
||||
update_data = app.dict(exclude_unset=True)
|
||||
|
||||
for key, value in update_data.items():
|
||||
setattr(db_app, key, value)
|
||||
|
||||
db.add(db_app)
|
||||
db.commit()
|
||||
db.refresh(db_app)
|
||||
return db_app
|
||||
|
||||
|
||||
def get_kintones(db: Session, type: int):
|
||||
kintones = db.query(models.Kintone).filter(models.Kintone.type == type).all()
|
||||
if not kintones:
|
||||
raise HTTPException(status_code=404, detail="Data not found")
|
||||
return kintones
|
||||
@@ -7,9 +7,25 @@ class User(Base):
|
||||
__tablename__ = "user"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
email = Column(String, unique=True, index=True, nullable=False)
|
||||
first_name = Column(String)
|
||||
last_name = Column(String)
|
||||
hashed_password = Column(String, nullable=False)
|
||||
email = Column(String(50), unique=True, index=True, nullable=False)
|
||||
first_name = Column(String(100))
|
||||
last_name = Column(String(100))
|
||||
hashed_password = Column(String(200), nullable=False)
|
||||
is_active = Column(Boolean, default=True)
|
||||
is_superuser = Column(Boolean, default=False)
|
||||
|
||||
class AppSetting(Base):
|
||||
__tablename__ = "appsetting"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
appid = Column(String(100), index=True, nullable=False)
|
||||
setting = Column(String(1000))
|
||||
|
||||
class Kintone(Base):
|
||||
__tablename__ = "kintone"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
type = Column(Integer, index=True, nullable=False)
|
||||
name = Column(String(100), nullable=False)
|
||||
desc = Column(String(500))
|
||||
content = Column(String(2000))
|
||||
@@ -43,3 +43,29 @@ class Token(BaseModel):
|
||||
class TokenData(BaseModel):
|
||||
email: str = None
|
||||
permissions: str = "user"
|
||||
|
||||
|
||||
class AppEdit(BaseModel):
|
||||
setting: str = None
|
||||
|
||||
class AppBase(BaseModel):
|
||||
appid: str
|
||||
setting: str = None
|
||||
|
||||
|
||||
class App(AppBase):
|
||||
id: int
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
|
||||
class Kintone(BaseModel):
|
||||
id: int
|
||||
type: int
|
||||
name: str = None
|
||||
desc: str = None
|
||||
content: str = None
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
@@ -2,32 +2,22 @@ from fastapi import FastAPI, Depends
|
||||
from starlette.requests import Request
|
||||
import uvicorn
|
||||
from app.api.api_v1.routers.kintone import kinton_router
|
||||
# from app.api.api_v1.routers.users import users_router
|
||||
# from app.api.api_v1.routers.auth import auth_router
|
||||
from app.api.api_v1.routers.users import users_router
|
||||
from app.api.api_v1.routers.auth import auth_router
|
||||
from app.api.api_v1.routers.platform import platform_router
|
||||
from app.core import config
|
||||
# from app.db.session import SessionLocal
|
||||
# from app.core.auth import get_current_active_user
|
||||
from app.db import Base,engine
|
||||
from app.core.auth import get_current_active_user
|
||||
from app.core.celery_app import celery_app
|
||||
from app import tasks
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
|
||||
Base.metadata.create_all(bind=engine)
|
||||
|
||||
app = FastAPI(
|
||||
title=config.PROJECT_NAME, docs_url="/api/docs", openapi_url="/api"
|
||||
)
|
||||
|
||||
origins = [
|
||||
"http://localhost:9000",
|
||||
"http://localhost",
|
||||
"http://localhost:8080",
|
||||
]
|
||||
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=origins,
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
# @app.middleware("http")
|
||||
# async def db_session_middleware(request: Request, call_next):
|
||||
@@ -50,14 +40,15 @@ async def example_task():
|
||||
|
||||
|
||||
# Routers
|
||||
# app.include_router(
|
||||
# users_router,
|
||||
# prefix="/api/v1",
|
||||
# tags=["users"],
|
||||
# dependencies=[Depends(get_current_active_user)],
|
||||
# )
|
||||
# app.include_router(auth_router, prefix="/api", tags=["auth"])
|
||||
app.include_router(kinton_router,prefix="/api/v1")
|
||||
app.include_router(
|
||||
users_router,
|
||||
prefix="/api/v1",
|
||||
tags=["users"],
|
||||
dependencies=[Depends(get_current_active_user)],
|
||||
)
|
||||
app.include_router(auth_router, prefix="/api", tags=["auth"])
|
||||
app.include_router(kinton_router,prefix="/api/v1",tags=["kintone"])
|
||||
app.include_router(platform_router,prefix="/api",tags=["platform"])
|
||||
|
||||
if __name__ == "__main__":
|
||||
uvicorn.run("main:app", host="0.0.0.0", reload=True, port=8888)
|
||||
|
||||
Reference in New Issue
Block a user