completely useless tap logic

This commit is contained in:
2024-04-14 02:24:54 +03:00
parent 4f5d125531
commit 17e0f78ecf
7 changed files with 82 additions and 17 deletions

View File

@ -26,6 +26,7 @@ class News(Base):
title = Column(String)
content = Column(String)
created = Column(DateTime, default=datetime.datetime.utcnow)
taps = Column(Integer, default=0)
class AnonymousUser(Base):

View File

@ -1,6 +1,7 @@
from datetime import datetime, timedelta, timezone
from typing import Annotated, Union
from sqlalchemy.orm import Session
from uuid import UUID
from fastapi import APIRouter, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordRequestForm
@ -39,3 +40,12 @@ async def create_news(
db: Annotated[Session, Depends(get_db)],
) -> schemas.NewsInDb:
return services.create_news(news=news, current_user=current_user, db=db)
@router.post("/{news_id}/tap")
async def create_news(
news_id: UUID,
db: Annotated[Session, Depends(get_db)],
) -> schemas.TapResponse:
services.tap_news(news_id=news_id, db=db)
return schemas.TapResponse(tap="ok")

View File

@ -13,6 +13,7 @@ class News(BaseModel):
title: str
content: str
created: datetime
taps: int
class NewsInDb(News):
@ -20,3 +21,7 @@ class NewsInDb(News):
class Config:
from_attributes = True
class TapResponse(BaseModel):
tap: str

View File

@ -1,6 +1,7 @@
from fastapi import Depends, HTTPException
from fastapi import Depends, HTTPException, status
from typing import Annotated
from sqlalchemy.orm import Session
from uuid import UUID
from ...dependencies import get_db
from ...db import models
@ -35,3 +36,15 @@ def create_news(
detail="Could not validate credentials",
headers={"WWW-Authenticate": "Bearer"},
)
def tap_news(news_id: UUID, db: Session):
n = db.query(models.News).filter(models.News.id == news_id).first()
if n:
setattr(n, "taps", n.taps + 1)
db.commit()
return
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Not found",
)