from marshmallow import Schema, fields, validate


class LoginSchema(Schema):    
    """
    Schema for validating user login data.

    Attributes:
        email (str): The user's email address.
        password (str): The user's password.
    """

    # Define the email field with required and validation rules
    email = fields.String(
        required=True,  # Email is a required field
        validate=[
            validate.Email(error="Invalid email format"),  # Validate as an email address
            validate.Length(min=5, error="Email must be at least 5 characters"),  # Specify a minimum length for the email
        ], 
        error_messages={'required': 'Email is requested.'}, # Custom error message
        # description='Email'   # Description for the email field 
    )

    # Define the password field with required and validation rules
    password = fields.String(
        required=True,  # Password is a required field
        validate=[
            validate.Length(min=8, error="Password must be at least 8 characters"),  # Minimum password length    
        ], 
        error_messages={'required': 'Password is requested.'}, # Custom error message
        # description='Password' # Description for the password field 
    )