feat: Add helper functions for Name
This commit is contained in:
parent
7b08ec1553
commit
5e5c9496fe
72
helpers/name_helpers.py
Normal file
72
helpers/name_helpers.py
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
import random
|
||||||
|
import string
|
||||||
|
from typing import Optional
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
|
from models.name import Name
|
||||||
|
|
||||||
|
def generate_random_name_code(length: int = 6) -> str:
|
||||||
|
"""
|
||||||
|
Generate a random name code of the specified length.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
length (int): Length of the name code (default: 6).
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: Random name code.
|
||||||
|
"""
|
||||||
|
characters = string.ascii_uppercase + string.digits
|
||||||
|
return ''.join(random.choice(characters) for _ in range(length))
|
||||||
|
|
||||||
|
def get_name_by_code(db: Session, name_code: str) -> Optional[Name]:
|
||||||
|
"""
|
||||||
|
Get a name by its code.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
db (Session): SQLAlchemy database session.
|
||||||
|
name_code (str): Name code to search for.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Optional[Name]: Name object if found, None otherwise.
|
||||||
|
"""
|
||||||
|
return db.query(Name).filter(Name.name_code == name_code).first()
|
||||||
|
|
||||||
|
def create_name(db: Session, name_code: Optional[str] = None) -> Name:
|
||||||
|
"""
|
||||||
|
Create a new name with a unique name code.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
db (Session): SQLAlchemy database session.
|
||||||
|
name_code (Optional[str]): Custom name code (default: None).
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Name: Created name object.
|
||||||
|
"""
|
||||||
|
if name_code is None:
|
||||||
|
name_code = generate_random_name_code()
|
||||||
|
|
||||||
|
# Check if the name code already exists
|
||||||
|
existing_name = get_name_by_code(db, name_code)
|
||||||
|
if existing_name:
|
||||||
|
raise ValueError(f"Name code '{name_code}' already exists.")
|
||||||
|
|
||||||
|
db_name = Name(name_code=name_code)
|
||||||
|
db.add(db_name)
|
||||||
|
db.commit()
|
||||||
|
db.refresh(db_name)
|
||||||
|
|
||||||
|
return db_name
|
||||||
|
|
||||||
|
def generate_name_code(db: Session) -> str:
|
||||||
|
"""
|
||||||
|
Generate a unique name code.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
db (Session): SQLAlchemy database session.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: Unique name code.
|
||||||
|
"""
|
||||||
|
while True:
|
||||||
|
name_code = generate_random_name_code()
|
||||||
|
if not get_name_by_code(db, name_code):
|
||||||
|
return name_code
|
Loading…
x
Reference in New Issue
Block a user