aliases
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import os
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.orm import Session, joinedload
|
||||
from . import models, schemas
|
||||
|
||||
@@ -6,11 +7,25 @@ def get_celebrity(db: Session, celebrity_id: int):
|
||||
# Usiamo joinedload per caricare in anticipo le relazioni e evitare query N+1
|
||||
return db.query(models.Celebrity).options(
|
||||
joinedload(models.Celebrity.profile_image),
|
||||
joinedload(models.Celebrity.images)
|
||||
joinedload(models.Celebrity.images),
|
||||
joinedload(models.Celebrity.aliases) # Carica anche gli alias
|
||||
).filter(models.Celebrity.id == celebrity_id).first()
|
||||
|
||||
def get_celebrities(db: Session, skip: int = 0, limit: int = 100):
|
||||
return db.query(models.Celebrity).offset(skip).limit(limit).all()
|
||||
def get_celebrities(db: Session, skip: int = 0, limit: int = 100, search: str = None):
|
||||
query = db.query(models.Celebrity).options(
|
||||
joinedload(models.Celebrity.profile_image)
|
||||
)
|
||||
if search:
|
||||
search_term = f"%{search}%"
|
||||
# Esegue un join con la tabella degli alias e filtra per nome o per alias
|
||||
query = query.outerjoin(models.Celebrity.aliases).filter(
|
||||
sa.or_(
|
||||
models.Celebrity.name.ilike(search_term),
|
||||
models.CelebrityAlias.alias_name.ilike(search_term)
|
||||
)
|
||||
).distinct() # distinct() evita duplicati se una celebrità ha più alias che matchano
|
||||
|
||||
return query.offset(skip).limit(limit).all()
|
||||
|
||||
def create_celebrity(db: Session, celebrity: schemas.CelebrityCreate):
|
||||
db_celebrity = models.Celebrity(**celebrity.model_dump())
|
||||
@@ -41,6 +56,23 @@ def delete_celebrity(db: Session, celebrity_id: int):
|
||||
db.commit()
|
||||
return db_celebrity
|
||||
|
||||
# --- Funzioni CRUD per gli Alias ---
|
||||
|
||||
def create_celebrity_alias(db: Session, celebrity_id: int, alias: schemas.CelebrityAliasCreate):
|
||||
db_alias = models.CelebrityAlias(celebrity_id=celebrity_id, alias_name=alias.alias_name)
|
||||
db.add(db_alias)
|
||||
db.commit()
|
||||
db.refresh(db_alias)
|
||||
return db_alias
|
||||
|
||||
def delete_celebrity_alias(db: Session, alias_id: int):
|
||||
db_alias = db.query(models.CelebrityAlias).filter(models.CelebrityAlias.id == alias_id).first()
|
||||
if not db_alias:
|
||||
return None
|
||||
db.delete(db_alias)
|
||||
db.commit()
|
||||
return db_alias
|
||||
|
||||
# --- Funzioni CRUD per le Immagini ---
|
||||
|
||||
def get_image(db: Session, image_id: int):
|
||||
|
||||
Reference in New Issue
Block a user