initial commit 2

This commit is contained in:
David
2026-05-22 18:58:35 -06:00
parent 1334540303
commit abfbb255fe
157 changed files with 8071 additions and 1 deletions

56
backend/app/crud.py Normal file
View File

@@ -0,0 +1,56 @@
from datetime import datetime, timezone
from sqlalchemy import select
from sqlalchemy.orm import Session
from .auth import hash_password, verify_password
from .models import Address, User
from .schemas import AddressCreate, UserCreate
def get_user_by_id(db: Session, user_id: int) -> User | None:
return db.get(User, user_id)
def get_user_by_email(db: Session, email: str) -> User | None:
statement = select(User).where(User.email == email)
return db.scalar(statement)
def create_user(db: Session, user_in: UserCreate) -> User:
user = User(
name=user_in.name,
email=user_in.email,
password_hash=hash_password(user_in.password),
)
db.add(user)
db.commit()
db.refresh(user)
return user
def authenticate_user(db: Session, email: str, password: str) -> User | None:
user = get_user_by_email(db, email)
if user is None:
return None
if not verify_password(password, user.password_hash):
return None
user.last_login_at = datetime.now(timezone.utc)
db.add(user)
db.commit()
db.refresh(user)
return user
def create_address(db: Session, user: User, address_in: AddressCreate) -> Address:
address = Address(
user_id=user.id,
house_number=address_in.house_number,
colonia=address_in.colonia,
street=address_in.street,
)
db.add(address)
db.commit()
db.refresh(address)
return address