Better integration of sqlite3 database

This commit is contained in:
GotthardG
2024-11-02 00:54:37 +01:00
parent 48cd233231
commit a01114a178
18 changed files with 835 additions and 582 deletions

View File

@@ -1,26 +1,32 @@
from fastapi import APIRouter, HTTPException, status
from typing import List, Optional
from app.data.data import return_addresses
from app.models import Address # Import the Address model
from fastapi import APIRouter, HTTPException, status, Depends
from sqlalchemy.orm import Session
from typing import List
from app.schemas import Address as AddressSchema, AddressCreate
from app.models import Address as AddressModel
from app.dependencies import get_db
router = APIRouter()
@router.get("/", response_model=List[Address])
async def get_return_addresses():
return return_addresses
@router.get("/", response_model=List[AddressSchema])
async def get_return_addresses(db: Session = Depends(get_db)):
return db.query(AddressModel).all()
@router.post("/", response_model=Address, status_code=status.HTTP_201_CREATED)
async def create_return_address(address: Address):
if any(a.city == address.city for a in return_addresses):
@router.post("/", response_model=AddressSchema, status_code=status.HTTP_201_CREATED)
async def create_return_address(address: AddressCreate, db: Session = Depends(get_db)):
if db.query(AddressModel).filter(AddressModel.city == address.city).first():
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="Address in this city already exists."
)
if return_addresses:
max_id = max(a.id for a in return_addresses)
address.id = max_id + 1 if address.id is None else address.id
else:
address.id = 1 if address.id is None else address.id
return_addresses.append(address)
return address
db_address = AddressModel(
street=address.street,
city=address.city,
zipcode=address.zipcode,
country=address.country
)
db.add(db_address)
db.commit()
db.refresh(db_address)
return db_address