diff --git a/src/baby_monitor/models/__init__.py b/src/baby_monitor/models/__init__.py new file mode 100644 index 0000000..33ff22f --- /dev/null +++ b/src/baby_monitor/models/__init__.py @@ -0,0 +1,3 @@ +from .auth import LoginRequest, LoginResponse + +__all__ = ["LoginRequest", "LoginResponse"] diff --git a/src/baby_monitor/models/auth.py b/src/baby_monitor/models/auth.py new file mode 100644 index 0000000..62a6a20 --- /dev/null +++ b/src/baby_monitor/models/auth.py @@ -0,0 +1,19 @@ +"""Authentication models for request and response validation.""" + +from pydantic import BaseModel + + +class LoginRequest(BaseModel): + """Request model for user login.""" + + username: str + password: str + + +class LoginResponse(BaseModel): + """Response model for successful login.""" + + message: str + username: str + access_token: str + token_type: str = "bearer" diff --git a/src/baby_monitor/models/db/__init__.py b/src/baby_monitor/models/db/__init__.py new file mode 100644 index 0000000..7469036 --- /dev/null +++ b/src/baby_monitor/models/db/__init__.py @@ -0,0 +1,5 @@ +"""Database models package.""" + +from baby_monitor.models.db.user import User + +__all__ = ["User"] diff --git a/src/baby_monitor/models/db/user.py b/src/baby_monitor/models/db/user.py new file mode 100644 index 0000000..31f3bdc --- /dev/null +++ b/src/baby_monitor/models/db/user.py @@ -0,0 +1,20 @@ +"""Database models.""" + +from sqlalchemy import Column, Integer, String, DateTime +from datetime import datetime + +from baby_monitor.repositories.dependencies.get_database import Base + + +class User(Base): + """User database model.""" + + __tablename__ = "users" + + id = Column(Integer, primary_key=True, index=True) + username = Column(String, unique=True, index=True, nullable=False) + hashed_password = Column(String, nullable=False) + created_at = Column(DateTime, default=datetime.utcnow, nullable=False) + + def __repr__(self) -> str: + return f""