69 lines
2.5 KiB
Python
69 lines
2.5 KiB
Python
from contextlib import asynccontextmanager
|
|
from fastapi import FastAPI, status, Depends
|
|
from fastapi.responses import JSONResponse
|
|
from module.pydantic_models import *
|
|
import module.mysql_utils as sql
|
|
|
|
app = FastAPI()
|
|
|
|
async def startup():
|
|
table_list = await sql.get_table_list()
|
|
print(table_list)
|
|
if 'user_table' not in table_list:
|
|
await sql.create_user_table()
|
|
print("user_table created")
|
|
else:
|
|
print("user_table already exist")
|
|
|
|
if 'blog_table'not in table_list:
|
|
await sql.create_blog_table()
|
|
print("user_table created")
|
|
else:
|
|
print("user_table already exist")
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app : FastAPI):
|
|
await startup()
|
|
yield
|
|
|
|
app = FastAPI(lifespan=lifespan)
|
|
|
|
@app.post("/user/create", status_code=status.HTTP_201_CREATED)
|
|
async def create_user(params: UserCreateForm):
|
|
user_id = await sql.create_user(params.user_name, params.phone_number)
|
|
return JSONResponse(content={'user_id' : user_id}, status_code=status.HTTP_201_CREATED)
|
|
|
|
@app.post("/user/read", status_code=status.HTTP_200_OK)
|
|
async def read_user(params: UserReadFromIdForm):
|
|
user_info = await sql.get_user_info_from_id(params.user_id)
|
|
return JSONResponse(content=user_info)
|
|
|
|
@app.patch("/user/update", status_code=status.HTTP_200_OK)
|
|
async def update_user(params: UserUpdatePhoneNumberFromIdForm):
|
|
updated_data = await sql.update_user_phone_from_id(params.user_id, params.phone_number)
|
|
return updated_data
|
|
|
|
@app.delete("/user/delete", status_code=status.HTTP_204_NO_CONTENT)
|
|
async def delete_user(params: UserDeleteForm):
|
|
await sql.delete_user_from_id(params.user_id)
|
|
return
|
|
|
|
@app.post("/blog/create", status_code=status.HTTP_201_CREATED)
|
|
async def create_blog(params: BlogCreateForm):
|
|
blog_id = await sql.create_blog(params.blog_owner, params.blog_title, params.blog_content)
|
|
return JSONResponse(content={'blog_id' : blog_id}, status_code=status.HTTP_201_CREATED)
|
|
|
|
@app.post("/blog/read", status_code=status.HTTP_200_OK)
|
|
async def read_blog(params: BlogReadFromIdForm):
|
|
blog_info = await sql.get_blog_info_from_id(params.blog_id)
|
|
return JSONResponse(content=blog_info)
|
|
|
|
@app.patch("/blog/update", status_code=status.HTTP_200_OK)
|
|
async def update_blog(params: BlogUpdateContentFromIdForm):
|
|
updated_data = await sql.update_blog_content_from_id(params.blog_id, params.blog_content)
|
|
return updated_data
|
|
|
|
@app.delete("/blog/delete", status_code=status.HTTP_204_NO_CONTENT)
|
|
async def delete_blog(params: BlogDeleteForm):
|
|
await sql.delete_blog_from_id(params.blog_id)
|
|
return |