added contacts and addresses manager
This commit is contained in:
@ -11,7 +11,7 @@ class Shipment(Base):
|
||||
shipment_name = Column(String, index=True)
|
||||
shipment_date = Column(Date)
|
||||
shipment_status = Column(String)
|
||||
comments = Column(String, nullable=True)
|
||||
comments = Column(String(200), nullable=True)
|
||||
contact_person_id = Column(Integer, ForeignKey("contact_persons.id"))
|
||||
return_address_id = Column(Integer, ForeignKey("addresses.id"))
|
||||
proposal_id = Column(Integer, ForeignKey('proposals.id'), nullable=True)
|
||||
|
@ -1,7 +1,7 @@
|
||||
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.schemas import Address as AddressSchema, AddressCreate, AddressUpdate
|
||||
from app.models import Address as AddressModel
|
||||
from app.dependencies import get_db
|
||||
|
||||
@ -29,4 +29,30 @@ async def create_return_address(address: AddressCreate, db: Session = Depends(ge
|
||||
db.add(db_address)
|
||||
db.commit()
|
||||
db.refresh(db_address)
|
||||
return db_address
|
||||
return db_address
|
||||
|
||||
@router.put("/{address_id}", response_model=AddressSchema)
|
||||
async def update_return_address(address_id: int, address: AddressUpdate, db: Session = Depends(get_db)):
|
||||
db_address = db.query(AddressModel).filter(AddressModel.id == address_id).first()
|
||||
if not db_address:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Address not found."
|
||||
)
|
||||
for key, value in address.dict(exclude_unset=True).items():
|
||||
setattr(db_address, key, value)
|
||||
db.commit()
|
||||
db.refresh(db_address)
|
||||
return db_address
|
||||
|
||||
@router.delete("/{address_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||
async def delete_return_address(address_id: int, db: Session = Depends(get_db)):
|
||||
db_address = db.query(AddressModel).filter(AddressModel.id == address_id).first()
|
||||
if not db_address:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Address not found."
|
||||
)
|
||||
db.delete(db_address)
|
||||
db.commit()
|
||||
return
|
@ -1,12 +1,13 @@
|
||||
from fastapi import APIRouter, HTTPException, status, Depends
|
||||
from sqlalchemy.orm import Session
|
||||
from typing import List
|
||||
from app.schemas import ContactPerson, ContactPersonCreate
|
||||
from app.schemas import ContactPerson, ContactPersonCreate, ContactPersonUpdate
|
||||
from app.models import ContactPerson as ContactPersonModel
|
||||
from app.dependencies import get_db
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
# Existing routes
|
||||
@router.get("/", response_model=List[ContactPerson])
|
||||
async def get_contacts(db: Session = Depends(get_db)):
|
||||
return db.query(ContactPersonModel).all()
|
||||
@ -28,4 +29,31 @@ async def create_contact(contact: ContactPersonCreate, db: Session = Depends(get
|
||||
db.add(db_contact)
|
||||
db.commit()
|
||||
db.refresh(db_contact)
|
||||
return db_contact
|
||||
return db_contact
|
||||
|
||||
# New routes
|
||||
@router.put("/{contact_id}", response_model=ContactPerson)
|
||||
async def update_contact(contact_id: int, contact: ContactPersonUpdate, db: Session = Depends(get_db)):
|
||||
db_contact = db.query(ContactPersonModel).filter(ContactPersonModel.id == contact_id).first()
|
||||
if not db_contact:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Contact not found."
|
||||
)
|
||||
for key, value in contact.dict(exclude_unset=True).items():
|
||||
setattr(db_contact, key, value)
|
||||
db.commit()
|
||||
db.refresh(db_contact)
|
||||
return db_contact
|
||||
|
||||
@router.delete("/{contact_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||
async def delete_contact(contact_id: int, db: Session = Depends(get_db)):
|
||||
db_contact = db.query(ContactPersonModel).filter(ContactPersonModel.id == contact_id).first()
|
||||
if not db_contact:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Contact not found."
|
||||
)
|
||||
db.delete(db_contact)
|
||||
db.commit()
|
||||
return
|
@ -21,6 +21,11 @@ class ContactPerson(ContactPersonBase):
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
class ContactPersonUpdate(BaseModel):
|
||||
firstname: str | None = None
|
||||
lastname: str | None = None
|
||||
phone_number: str | None = None
|
||||
email: EmailStr | None = None
|
||||
|
||||
# Address schemas
|
||||
class AddressCreate(BaseModel):
|
||||
@ -36,6 +41,11 @@ class Address(AddressCreate):
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
class AddressUpdate(BaseModel):
|
||||
street: str | None = None
|
||||
city: str | None = None
|
||||
zipcode: str | None = None
|
||||
country: str | None = None
|
||||
|
||||
# Sample schemas
|
||||
class Sample(BaseModel):
|
||||
|
Reference in New Issue
Block a user