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