Ved Gupta
getToken added
f1cd69e
import uuid
import re
from datetime import datetime
from pydantic import ConfigDict, BaseModel, Field, field_validator
from typing import Optional
from sqlalchemy import Column, Integer, String, Boolean
from app.core.database import Base
from sqlalchemy.orm import Mapped, mapped_column, relationship
class UserBase(BaseModel):
email: str
username: str
class UserResponse(UserBase):
id: uuid.UUID = Field(..., alias="id")
is_active: Optional[bool] = None
created_at: datetime = Field(..., alias="created_at")
model_config = ConfigDict(
from_attributes=True,
)
class PasswordUpdate(BaseModel):
current_password: str
new_password: str
class User_GET_TOKEN(BaseModel):
email: str
password: str
class Response_Token(BaseModel):
token: str
class User(UserBase):
password: str
@field_validator("email")
def email_must_be_valid(cls, v):
if not re.match(r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$", v):
raise ValueError("Invalid email address")
return v
@field_validator("password")
def password_must_be_long(cls, v):
if len(v) < 6:
raise ValueError("Password must be at least 6 characters long")
return v
model_config = ConfigDict(from_attributes=True)
class UpdateUser(UserBase):
current_password: str
class UserDeletedResponse(BaseModel):
detail: str = Field(..., alias="detail")
model_config = ConfigDict(from_attributes=True)