mekasu0124

Untitled

Oct 21st, 2023
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.49 KB | None | 0 0
  1. import models
  2.  
  3. from fastapi import FastAPI, HTTPException, Depends
  4. from fastapi.middleware.cors import CORSMiddleware
  5. from typing import Annotated, List
  6. from sqlalchemy.orm import Session
  7. from pydantic import BaseModel
  8. from database import SessionLocal, engine
  9.  
  10. app = FastAPI()
  11.  
  12. origins = [
  13.     "http://localhost:3000",
  14. ]
  15.  
  16. app.add_middleware(
  17.     CORSMiddleware,
  18.     allow_origins=origins,
  19.     allow_credentials=True,
  20.     allow_methods=["*"],
  21.     allow_headers=["*"]
  22. )
  23.  
  24.  
  25. class UserBase(BaseModel):
  26.     first_name: str
  27.     last_name: str
  28.     email_address: str
  29.     phone_number: str
  30.     password: str
  31.     date_of_birth: str
  32.  
  33.  
  34. class UserModel(UserBase):
  35.     id: int
  36.  
  37.     class Config:
  38.         orm_mode = True
  39.  
  40.  
  41. def get_db():
  42.     db = SessionLocal()
  43.  
  44.     try:
  45.         yield db
  46.     finally:
  47.         db.close()
  48.  
  49.  
  50. db_dependency = Annotated[Session, Depends(get_db)]
  51.  
  52. models.Base.metadata.create_all(bind=engine)
  53.  
  54.  
  55. @app.post("/create_account", response_model=UserModel)
  56. async def create_new_user(user: UserBase, db: db_dependency):
  57.     db_new_user = models.User(**user.dict())
  58.     db.add(db_new_user)
  59.     db.commit()
  60.     db.refresh(db_new_user)
  61.     return db_new_user
  62.  
  63.  
  64. @app.get("/create_account", response_model=List[UserModel])
  65. async def read_users(db: db_dependency, skip: int = 0, limit: int = 100):
  66.     users = db.query(models.User).offset(skip).limit(limit).all()
  67.     return users
  68.  
  69.  
  70. @app.get("/")
  71. async def root():
  72.     return {"message": "Hello World!"}
  73.  
Advertisement
Add Comment
Please, Sign In to add comment