Skip to content
Snippets Groups Projects
crud.py 1.18 KiB
Newer Older
  • Learn to ignore specific revisions
  • Lukas Köhler's avatar
    Lukas Köhler committed
    import uuid
    
    import logging
    
    Lukas Köhler's avatar
    Lukas Köhler committed
    
    from sqlalchemy.orm import Session
    
    from app.api.v1.endpoints.order.address.schemas import AddressCreateSchema
    from app.database.models import Address
    
    
    def create_address(schema: AddressCreateSchema, db: Session):
        entity = Address(**schema.dict())
        db.add(entity)
        db.commit()
    
        logging.info('Created Address {}, {}'.format(entity.house_number, entity.street))
    
    Lukas Köhler's avatar
    Lukas Köhler committed
        return entity
    
    
    def get_address_by_id(address_id: uuid.UUID, db: Session):
        entity = db.query(Address).filter(Address.id == address_id).first()
        return entity
    
    
    def delete_address_by_id(address_id: uuid.UUID, db: Session):
    
        entity = get_address_by_id(address_id, db)
    
    Lukas Köhler's avatar
    Lukas Köhler committed
        if entity:
            db.delete(entity)
            db.commit()
    
            logging.info('Deleted Address {}, {}'.format(entity.house_number, entity.street))
    
    Lukas Köhler's avatar
    Lukas Köhler committed
    
    
    Lukas Köhler's avatar
    Lukas Köhler committed
    def update_address(address: Address, changed_address: AddressCreateSchema, db: Session):
    
    Lukas Köhler's avatar
    Lukas Köhler committed
        for key, value in changed_address.dict().items():
            setattr(address, key, value)
    
    Lukas Köhler's avatar
    Lukas Köhler committed
        db.commit()
        db.refresh(address)
    
        logging.info('Updated Address {}'.format(address.id))
    
    Lukas Köhler's avatar
    Lukas Köhler committed
        return address
    
    
    def get_all_addresses(db: Session):
        return db.query(Address).all()