mirror of
https://github.com/sunrin-ana/2025-SSF.git
synced 2026-03-09 18:40:02 +00:00
2025 SSF Public
This commit is contained in:
commit
76a02076c9
192 changed files with 5016 additions and 0 deletions
150
Backend/services/photo_service.py
Normal file
150
Backend/services/photo_service.py
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
# import os
|
||||
# from datetime import datetime
|
||||
# from typing import List
|
||||
# from fastapi import UploadFile
|
||||
# from ..schemas.photo import (
|
||||
# PhotoUpload,
|
||||
# Photo,
|
||||
# PhotoComment,
|
||||
# CommentCreate,
|
||||
# CommentResponse,
|
||||
# )
|
||||
# from ..utils.db import execute, fetch_one, fetch_all
|
||||
# from ..utils.default_queries import PhotoQueries
|
||||
# from ..utils.image_processor import ImageProcessor
|
||||
#
|
||||
#
|
||||
# class PhotoService:
|
||||
# def __init__(self):
|
||||
# self.image_processor = ImageProcessor()
|
||||
# self.upload_dir = "uploads/photos"
|
||||
# os.makedirs(self.upload_dir, exist_ok=True)
|
||||
#
|
||||
# @staticmethod
|
||||
# async def init_db():
|
||||
# await execute(PhotoQueries.CREATE_TABLE)
|
||||
# await execute(PhotoQueries.CREATE_COMMENTS_TABLE)
|
||||
#
|
||||
# async def upload_photo(
|
||||
# self, user_id: int, photo_data: PhotoUpload, file: UploadFile
|
||||
# ) -> Photo:
|
||||
# if not file.content_type.startswith("image/"):
|
||||
# raise ValueError("File must be an image")
|
||||
#
|
||||
# self.image_processor.validate_image_file(file.filename, file.size)
|
||||
#
|
||||
# created_at = datetime.now()
|
||||
#
|
||||
# image_path = await self.image_processor.write_file_and_get_image_path(
|
||||
# file, self.upload_dir
|
||||
# )
|
||||
#
|
||||
# query = PhotoQueries.INSERT_PHOTO
|
||||
#
|
||||
# await execute(
|
||||
# query,
|
||||
# (user_id, photo_data.album_name, image_path, photo_data.title, created_at),
|
||||
# )
|
||||
#
|
||||
# row = await fetch_one(
|
||||
# PhotoQueries.SELECT_LATEST_USER_PHOTO,
|
||||
# (user_id,),
|
||||
# )
|
||||
#
|
||||
# return Photo(**row)
|
||||
#
|
||||
# async def get_user_photos(
|
||||
# self, user_id: int, skip: int = 0, limit: int = 20, album_name: str = None
|
||||
# ) -> List[Photo]:
|
||||
# if album_name:
|
||||
# query = PhotoQueries.SELECT_USER_PHOTOS_BY_ALBUM
|
||||
# rows = await fetch_all(query, (user_id, album_name, limit, skip))
|
||||
# else:
|
||||
# query = PhotoQueries.SELECT_USER_PHOTOS
|
||||
# rows = await fetch_all(query, (user_id, limit, skip))
|
||||
#
|
||||
# return [Photo(**row) for row in rows]
|
||||
#
|
||||
# async def check_friendship(self, user_id: int, photo_id: int) -> bool:
|
||||
# photo_query = PhotoQueries.SELECT_PHOTO_OWNER
|
||||
# photo_row = await fetch_one(photo_query, (photo_id,))
|
||||
#
|
||||
# if not photo_row:
|
||||
# return False
|
||||
#
|
||||
# photo_owner_id = photo_row["user_id"]
|
||||
#
|
||||
# if user_id == photo_owner_id:
|
||||
# return True
|
||||
#
|
||||
# from ..services.friendship_service import FriendshipService
|
||||
#
|
||||
# friendship_service = FriendshipService()
|
||||
# return await friendship_service.check_friendship(user_id, photo_owner_id)
|
||||
#
|
||||
# async def add_comment(
|
||||
# self, photo_id: int, user_id: int, comment_data: CommentCreate
|
||||
# ) -> PhotoComment:
|
||||
# if not await self.check_friendship(user_id, photo_id):
|
||||
# raise ValueError("Cannot add comment before being friends")
|
||||
# created_at = datetime.now()
|
||||
#
|
||||
# query = PhotoQueries.INSERT_COMMENT
|
||||
#
|
||||
# await execute(query, (photo_id, user_id, comment_data.content, created_at))
|
||||
#
|
||||
# row = await fetch_one(
|
||||
# PhotoQueries.SELECT_LATEST_COMMENT,
|
||||
# (photo_id, user_id),
|
||||
# )
|
||||
#
|
||||
# return PhotoComment(**row)
|
||||
#
|
||||
# async def get_photo_comments(self, photo_id: int) -> List[CommentResponse]:
|
||||
# query = PhotoQueries.SELECT_PHOTO_COMMENTS
|
||||
#
|
||||
# rows = await fetch_all(query, (photo_id,))
|
||||
#
|
||||
# return [CommentResponse(**row) for row in rows]
|
||||
#
|
||||
# async def apply_filter(
|
||||
# self,
|
||||
# photo_id: int,
|
||||
# filter_type: str,
|
||||
# user_id: int,
|
||||
# cover: bool = False,
|
||||
# title: str = None,
|
||||
# ) -> str:
|
||||
# photo_query = PhotoQueries.SELECT_PHOTO_BY_ID
|
||||
# row = await fetch_one(photo_query, (photo_id, user_id))
|
||||
#
|
||||
# if not row:
|
||||
# raise ValueError("Photo not found")
|
||||
#
|
||||
# original_path = row["image_path"]
|
||||
# filtered_path = await self.image_processor.apply_filter(
|
||||
# original_path, filter_type
|
||||
# )
|
||||
#
|
||||
# if cover:
|
||||
# photo_update_query = PhotoQueries.UPDATE_PHOTO_PATH
|
||||
# await execute(photo_update_query, (filtered_path, photo_id, user_id))
|
||||
# else:
|
||||
# row = await fetch_one(
|
||||
# PhotoQueries.SELECT_PHOTO_ALBUM_NAME, (photo_id, user_id)
|
||||
# )
|
||||
# photo_create_query = PhotoQueries.INSERT_PHOTO
|
||||
# await execute(
|
||||
# photo_create_query,
|
||||
# (user_id, row["album_name"], filtered_path, title, datetime.now()),
|
||||
# )
|
||||
#
|
||||
# return filtered_path
|
||||
#
|
||||
# async def delete_photo(self, photo_id: int, user_id: int) -> bool:
|
||||
# try:
|
||||
# query = PhotoQueries.DELETE_PHOTO
|
||||
# await execute(query, (photo_id, user_id))
|
||||
# return True
|
||||
# except Exception:
|
||||
# return False
|
||||
Loading…
Add table
Add a link
Reference in a new issue