mirror of
https://github.com/khoaliber/LetterFeed.git
synced 2026-03-02 13:18:27 +00:00
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
from nanoid import generate
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.core.logging import get_logger
|
|
from app.models.entries import Entry
|
|
from app.schemas.entries import EntryCreate
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
|
|
def get_entries_by_newsletter(
|
|
db: Session, newsletter_id: str, skip: int = 0, limit: int = 100
|
|
):
|
|
"""Retrieve entries for a specific newsletter."""
|
|
logger.debug(
|
|
f"Querying entries for newsletter_id={newsletter_id}, skip={skip}, limit={limit}"
|
|
)
|
|
return (
|
|
db.query(Entry)
|
|
.filter(Entry.newsletter_id == newsletter_id)
|
|
.offset(skip)
|
|
.limit(limit)
|
|
.all()
|
|
)
|
|
|
|
|
|
def get_entry_by_message_id(db: Session, message_id: str):
|
|
"""Retrieve an entry by its message_id."""
|
|
logger.debug(f"Querying for entry with message_id={message_id}")
|
|
return db.query(Entry).filter(Entry.message_id == message_id).first()
|
|
|
|
|
|
def create_entry(db: Session, entry: EntryCreate, newsletter_id: str):
|
|
"""Create a new entry for a newsletter."""
|
|
logger.info(
|
|
f"Creating new entry for newsletter_id={newsletter_id} with subject '{entry.subject}'"
|
|
)
|
|
db_entry = Entry(id=generate(), **entry.model_dump(), newsletter_id=newsletter_id)
|
|
db.add(db_entry)
|
|
db.commit()
|
|
db.refresh(db_entry)
|
|
logger.info(f"Successfully created entry with id={db_entry.id}")
|
|
return db_entry
|