Add helper functions for Intern
This commit is contained in:
parent
3e77f22753
commit
a1c0b7bee4
78
helpers/intern_helpers.py
Normal file
78
helpers/intern_helpers.py
Normal file
@ -0,0 +1,78 @@
|
||||
from typing import List, Optional
|
||||
import re
|
||||
from pydantic import EmailStr, validator
|
||||
from models import Intern
|
||||
|
||||
def validate_phone_number(phone_number: str) -> bool:
|
||||
"""
|
||||
Validate a phone number format.
|
||||
|
||||
Args:
|
||||
phone_number: The phone number to validate
|
||||
|
||||
Returns:
|
||||
bool: True if phone number format is valid, False otherwise
|
||||
"""
|
||||
pattern = r'^\+?\d{10,13}$'
|
||||
return bool(re.match(pattern, phone_number))
|
||||
|
||||
def get_all_interns(db_session) -> List[Intern]:
|
||||
"""
|
||||
Get a list of all interns from the database.
|
||||
|
||||
Args:
|
||||
db_session: The database session
|
||||
|
||||
Returns:
|
||||
List[Intern]: A list of Intern objects
|
||||
"""
|
||||
return db_session.query(Intern).all()
|
||||
|
||||
def get_intern_by_email(db_session, email: EmailStr) -> Optional[Intern]:
|
||||
"""
|
||||
Get an intern by their email address.
|
||||
|
||||
Args:
|
||||
db_session: The database session
|
||||
email: Email to search for
|
||||
|
||||
Returns:
|
||||
Intern object if found, None otherwise
|
||||
"""
|
||||
return db_session.query(Intern).filter(Intern.email == email).first()
|
||||
|
||||
class InternBase:
|
||||
first_name: str
|
||||
last_name: str
|
||||
email: EmailStr
|
||||
phone_number: str
|
||||
track: str
|
||||
bio: Optional[str] = None
|
||||
|
||||
@validator('phone_number')
|
||||
def validate_phone_number(cls, phone_number):
|
||||
if not validate_phone_number(phone_number):
|
||||
raise ValueError('Invalid phone number format')
|
||||
return phone_number
|
||||
|
||||
def create_intern(db_session, intern_data: InternBase) -> Intern:
|
||||
"""
|
||||
Create a new intern in the database.
|
||||
|
||||
Args:
|
||||
db_session: The database session
|
||||
intern_data: The data for the new intern
|
||||
|
||||
Returns:
|
||||
Intern: The created Intern object
|
||||
"""
|
||||
existing_intern = get_intern_by_email(db_session, intern_data.email)
|
||||
if existing_intern:
|
||||
raise ValueError('Email already registered')
|
||||
|
||||
new_intern = Intern(**intern_data.dict())
|
||||
db_session.add(new_intern)
|
||||
db_session.commit()
|
||||
db_session.refresh(new_intern)
|
||||
|
||||
return new_intern
|
Loading…
x
Reference in New Issue
Block a user