From a22de7cef9dcfdeb107b0c6bf4c058d08d7437ef Mon Sep 17 00:00:00 2001 From: Brian Bjarke Jensen Date: Thu, 6 Nov 2025 21:33:13 +0100 Subject: [PATCH] added data models --- src/baby_monitor/models/__init__.py | 3 +++ src/baby_monitor/models/auth.py | 19 +++++++++++++++++++ src/baby_monitor/models/db/__init__.py | 5 +++++ src/baby_monitor/models/db/user.py | 20 ++++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 src/baby_monitor/models/__init__.py create mode 100644 src/baby_monitor/models/auth.py create mode 100644 src/baby_monitor/models/db/__init__.py create mode 100644 src/baby_monitor/models/db/user.py 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""