Move all to subDir sustApp
This commit is contained in:
+130
@@ -0,0 +1,130 @@
|
||||
from fastapi import FastAPI, HTTPException, Depends
|
||||
from fastapi.security import OAuth2PasswordBearer
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from pydantic import BaseModel
|
||||
from typing import List, Annotated, Optional
|
||||
import models
|
||||
from database import engine, SessionLocal
|
||||
from sqlalchemy.orm import Session
|
||||
from datetime import datetime
|
||||
|
||||
#http://127.0.0.1:8000/docs -> swagger like ui
|
||||
#ngrok http http://localhost:8000
|
||||
|
||||
app = FastAPI()
|
||||
#oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
|
||||
models.Base.metadata.create_all(bind=engine)
|
||||
|
||||
origins = [
|
||||
"http://localhost.tiangolo.com",
|
||||
"https://localhost.tiangolo.com",
|
||||
"http://localhost",
|
||||
"http://localhost:8080",
|
||||
"http://localhost:3000",
|
||||
]
|
||||
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=origins,
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
class User(BaseModel):
|
||||
username: str
|
||||
email: str | None = None
|
||||
full_name: str | None = None
|
||||
disabled: bool | None = None
|
||||
|
||||
class DeliveryBase(BaseModel):
|
||||
delivery_date: datetime
|
||||
delivered_by: int
|
||||
|
||||
class PaymentBase(BaseModel):
|
||||
payment_date: datetime
|
||||
|
||||
class MemberBase(BaseModel):
|
||||
member_count: int
|
||||
member_firstname: str
|
||||
member_firstname_spouse: str | None = None
|
||||
member_surname: str
|
||||
member_suffix: str | None = None
|
||||
member_street: str
|
||||
member_streetnumber: str | None = None
|
||||
member_email: str | None = None
|
||||
member_zip: int
|
||||
member_city: str
|
||||
member_active: bool
|
||||
member_gender: str | None = None
|
||||
member_connected: int | None = None
|
||||
member_printed: bool
|
||||
#member_coordinates:
|
||||
#payments: Optional[List[PaymentBase]]
|
||||
member_deliveries: Optional[List[DeliveryBase]]
|
||||
#deliveries: Mapped[List["DeliveryBase"]] = relationship()
|
||||
|
||||
def get_db():
|
||||
db = SessionLocal()
|
||||
try:
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
db_dependency = Annotated[Session, Depends(get_db)]
|
||||
|
||||
@app.get("/members/", response_model=List[MemberBase])
|
||||
async def read_members(db: db_dependency, skip: int = 0, limit: int = 100 ):
|
||||
members = db.query(models.Members).offset(skip).limit(limit).all()
|
||||
if not members:
|
||||
raise HTTPException(status_code=400, detail='No members')
|
||||
return members
|
||||
|
||||
@app.get("/member/{member_id}")
|
||||
async def read_member(member_id: int, db: db_dependency): #, token: Annotated[str, Depends(oauth2_scheme)]):
|
||||
result = db.query(models.Members).filter(models.Members.id == member_id).first()
|
||||
if not result:
|
||||
raise HTTPException(status_code=400, detail='Member does not exist')
|
||||
return result
|
||||
|
||||
@app.get("/payments/{member_id}")
|
||||
async def read_payments(member_id: int, db: db_dependency):
|
||||
result = db.query(models.Members).filter(models.Members.id == member_id).all()
|
||||
if not result:
|
||||
raise HTTPException(status_code=400, detail=f'No payments found for member {member_id}')
|
||||
return result
|
||||
|
||||
@app.post("/members/")
|
||||
async def create_member(member: MemberBase, db: db_dependency):
|
||||
#db_member = models.Members(**member.model_dump())
|
||||
db_member = models.Members(member_firstname=member.member_firstname,
|
||||
member_surname=member.member_surname,
|
||||
member_active=member.member_active)
|
||||
db.add(db_member)
|
||||
db.commit()
|
||||
|
||||
@app.post("/fullmembers/")
|
||||
async def create_members(members: List[MemberBase], db: db_dependency):
|
||||
for member in members:
|
||||
db_member = models.Members(member_count=member.member_count,
|
||||
member_firstname=member.member_firstname,
|
||||
member_firstname_spouse=member.member_firstname_spouse,
|
||||
member_surname=member.member_surname,
|
||||
member_suffix=member.member_suffix,
|
||||
member_street=member.member_street,
|
||||
member_streetnumber=member.member_streetnumber,
|
||||
member_email=member.member_email,
|
||||
member_zip=member.member_zip,
|
||||
member_city=member.member_city,
|
||||
member_active=member.member_active,
|
||||
member_gender=member.member_gender,
|
||||
member_connected=member.member_connected)
|
||||
db.add(db_member)
|
||||
#db.commit()
|
||||
#db.refresh(db_member)
|
||||
if not member.payments is None:
|
||||
for payment in member.payments:
|
||||
db_payment = models.Payments(payment_date=payment.payment_date,
|
||||
member_id=db_member.id)
|
||||
db.add(db_payment)
|
||||
db.commit()
|
||||
Reference in New Issue
Block a user