mirror of
https://github.com/khoaliber/LetterFeed.git
synced 2026-03-09 05:39:13 +00:00
feat: custom newsletter slug
This commit is contained in:
@@ -10,16 +10,18 @@ logger = get_logger(__name__)
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/feeds/{newsletter_id}")
|
||||
def get_newsletter_feed(newsletter_id: str, db: Session = Depends(get_db)):
|
||||
@router.get("/feeds/{feed_identifier}")
|
||||
def get_newsletter_feed(feed_identifier: str, db: Session = Depends(get_db)):
|
||||
"""Generate an Atom feed for a specific newsletter."""
|
||||
logger.info(f"Generating feed for newsletter_id={newsletter_id}")
|
||||
feed = generate_feed(db, newsletter_id)
|
||||
logger.info(f"Generating feed for newsletter with identifier={feed_identifier}")
|
||||
feed = generate_feed(db, feed_identifier)
|
||||
if not feed:
|
||||
logger.warning(
|
||||
f"Newsletter with id={newsletter_id} not found, cannot generate feed."
|
||||
f"Newsletter with identifier={feed_identifier} not found, cannot generate feed."
|
||||
)
|
||||
raise HTTPException(status_code=404, detail="Newsletter not found")
|
||||
|
||||
logger.info(f"Successfully generated feed for newsletter_id={newsletter_id}")
|
||||
logger.info(
|
||||
f"Successfully generated feed for newsletter with identifier={feed_identifier}"
|
||||
)
|
||||
return Response(content=feed, media_type="application/atom+xml")
|
||||
|
||||
@@ -9,7 +9,7 @@ from app.crud.entries import create_entry
|
||||
from app.crud.newsletters import (
|
||||
create_newsletter,
|
||||
delete_newsletter,
|
||||
get_newsletter,
|
||||
get_newsletter_by_identifier,
|
||||
get_newsletters,
|
||||
update_newsletter,
|
||||
)
|
||||
@@ -26,7 +26,10 @@ def create_new_newsletter(newsletter: NewsletterCreate, db: Session = Depends(ge
|
||||
logger.info(
|
||||
f"Request to create new newsletter for senders {newsletter.sender_emails}"
|
||||
)
|
||||
return create_newsletter(db=db, newsletter=newsletter)
|
||||
db_newsletter = create_newsletter(db=db, newsletter=newsletter)
|
||||
if db_newsletter is None:
|
||||
raise HTTPException(status_code=409, detail="Slug already in use")
|
||||
return db_newsletter
|
||||
|
||||
|
||||
@router.get("/newsletters", response_model=List[Newsletter])
|
||||
@@ -41,7 +44,7 @@ def read_newsletters(skip: int = 0, limit: int = 100, db: Session = Depends(get_
|
||||
def read_newsletter(newsletter_id: str, db: Session = Depends(get_db)):
|
||||
"""Retrieve a single newsletter by its ID."""
|
||||
logger.info(f"Request to read newsletter with id={newsletter_id}")
|
||||
db_newsletter = get_newsletter(db, newsletter_id=newsletter_id)
|
||||
db_newsletter = get_newsletter_by_identifier(db, identifier=newsletter_id)
|
||||
if db_newsletter is None:
|
||||
logger.warning(f"Newsletter with id={newsletter_id} not found")
|
||||
raise HTTPException(status_code=404, detail="Newsletter not found")
|
||||
@@ -60,6 +63,8 @@ def update_existing_newsletter(
|
||||
if db_newsletter is None:
|
||||
logger.warning(f"Newsletter with id={newsletter_id} not found, cannot update")
|
||||
raise HTTPException(status_code=404, detail="Newsletter not found")
|
||||
if db_newsletter == "conflict":
|
||||
raise HTTPException(status_code=409, detail="Slug already in use")
|
||||
return db_newsletter
|
||||
|
||||
|
||||
@@ -80,7 +85,7 @@ def create_newsletter_entry(
|
||||
):
|
||||
"""Create a new entry for a specific newsletter."""
|
||||
logger.info(f"Request to create entry for newsletter_id={newsletter_id}")
|
||||
db_newsletter = get_newsletter(db, newsletter_id=newsletter_id)
|
||||
db_newsletter = get_newsletter_by_identifier(db, identifier=newsletter_id)
|
||||
if db_newsletter is None:
|
||||
logger.warning(
|
||||
f"Newsletter with id={newsletter_id} not found, cannot create entry"
|
||||
|
||||
Reference in New Issue
Block a user