fix(video-player): fix the video player to permit the nagivation through the video (it was because de fast api server refused range request)
Some checks failed
Deploy to Development / build-and-deploy (push) Failing after 2m15s
Some checks failed
Deploy to Development / build-and-deploy (push) Failing after 2m15s
This commit is contained in:
@@ -6,7 +6,7 @@ import uuid
|
||||
from pathlib import Path
|
||||
from config.database import get_db
|
||||
from config.settings import settings
|
||||
from models.vlog import Vlog, VlogLike, VlogComment
|
||||
from models.vlog import Vlog, VlogLike, VlogComment, VlogView
|
||||
from models.user import User
|
||||
from schemas.vlog import VlogCreate, VlogUpdate, VlogResponse, VlogCommentCreate
|
||||
from utils.security import get_current_active_user
|
||||
@@ -56,8 +56,21 @@ async def get_vlog(
|
||||
detail="Vlog not found"
|
||||
)
|
||||
|
||||
# Increment view count
|
||||
vlog.views_count += 1
|
||||
# Manage views and replays
|
||||
view = db.query(VlogView).filter(
|
||||
VlogView.vlog_id == vlog_id,
|
||||
VlogView.user_id == current_user.id
|
||||
).first()
|
||||
|
||||
if view:
|
||||
# User has already viewed this vlog -> Count as replay
|
||||
vlog.replays_count = (vlog.replays_count or 0) + 1
|
||||
else:
|
||||
# First time viewing -> Count as unique view
|
||||
new_view = VlogView(vlog_id=vlog_id, user_id=current_user.id)
|
||||
db.add(new_view)
|
||||
vlog.views_count += 1
|
||||
|
||||
db.commit()
|
||||
|
||||
return format_vlog_response(vlog, db, current_user.id)
|
||||
@@ -149,10 +162,15 @@ async def toggle_vlog_like(
|
||||
message = "Like removed"
|
||||
else:
|
||||
# Like
|
||||
like = VlogLike(vlog_id=vlog_id, user_id=current_user.id)
|
||||
db.add(like)
|
||||
vlog.likes_count += 1
|
||||
message = "Vlog liked"
|
||||
try:
|
||||
like = VlogLike(vlog_id=vlog_id, user_id=current_user.id)
|
||||
db.add(like)
|
||||
vlog.likes_count += 1
|
||||
message = "Vlog liked"
|
||||
except Exception:
|
||||
# Handle potential race condition or constraint violation
|
||||
db.rollback()
|
||||
return {"message": "Already liked", "likes_count": vlog.likes_count}
|
||||
|
||||
db.commit()
|
||||
return {"message": message, "likes_count": vlog.likes_count}
|
||||
@@ -244,7 +262,7 @@ async def upload_vlog_video(
|
||||
|
||||
# Check file size
|
||||
video_content = await video.read()
|
||||
max_size = SettingsService.get_max_upload_size(db, video.content_type or "video/mp4")
|
||||
max_size = SettingsService.get_max_upload_size(db, video.content_type or "video/mp4", is_vlog=True)
|
||||
if len(video_content) > max_size:
|
||||
max_size_mb = max_size // (1024 * 1024)
|
||||
raise HTTPException(
|
||||
@@ -363,6 +381,7 @@ def format_vlog_response(vlog: Vlog, db: Session, current_user_id: int) -> dict:
|
||||
"thumbnail_url": vlog.thumbnail_url,
|
||||
"duration": vlog.duration,
|
||||
"views_count": vlog.views_count,
|
||||
"replays_count": vlog.replays_count,
|
||||
"likes_count": vlog.likes_count,
|
||||
"created_at": vlog.created_at,
|
||||
"updated_at": vlog.updated_at,
|
||||
|
||||
Reference in New Issue
Block a user