Update game models

This commit is contained in:
2024-05-12 20:07:58 +04:00
parent ce1a706467
commit 6c40917220
6 changed files with 60 additions and 31 deletions

View File

@@ -11,6 +11,7 @@ async def add_game(db: AsyncSession,
game_info: sch.GameCreate,
user_id: int):
game = mdl.Game(**game_info.model_dump(),
update_date=strftime("%Y-%m-%d %H:%M:%S"),
upload_date=strftime("%Y-%m-%d %H:%M:%S"),
owner_id=user_id)
return await add_transaction(db, game)

View File

@@ -0,0 +1,2 @@
from .games import Game as Game
from .users import User as User

View File

@@ -1,23 +1,18 @@
from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship
from .database import Base
from ..database import Base
class Game(Base):
__tablename__ = "games"
id = Column(Integer, primary_key=True)
cover = Column(String)
title = Column(String, nullable=False, unique=True)
cover = Column(String)
description = Column(String)
torrent_file = Column(String, nullable=False)
language = Column(String)
version = Column(String)
download_size = Column(String)
upload_date = Column(String, nullable=False)
release_date = Column(String)
trailer = Column(String)
system = Column(String)
processor = Column(String)
@@ -25,16 +20,12 @@ class Game(Base):
graphics = Column(String)
storage = Column(String)
version = Column(String)
update_date = Column(String, nullable=False)
developer = Column(String)
language = Column(String)
release_date = Column(String)
download_size = Column(String)
owner_id = Column(Integer, ForeignKey("users.id"))
owner = relationship("User", back_populates="games")
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
email = Column(String, nullable=False, unique=True)
name = Column(String, nullable=False)
hash_of_password = Column(String, nullable=False)
games = relationship("Game", back_populates="owner")

14
database/models/users.py Normal file
View File

@@ -0,0 +1,14 @@
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import relationship
from ..database import Base
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
email = Column(String, nullable=False, unique=True)
name = Column(String, nullable=False)
hash_of_password = Column(String, nullable=False)
games = relationship("Game", back_populates="owner")

View File

@@ -6,7 +6,7 @@ class GameCardBase(BaseModel):
title: str
cover: Optional[str] = None
description: Optional[str] = None
release_date: Optional[str] = None
version: Optional[str] = None
class GameCard(GameCardBase):
@@ -15,9 +15,7 @@ class GameCard(GameCardBase):
class GameBase(GameCardBase):
torrent_file: str
language: Optional[str] = None
version: Optional[str] = None
download_size: Optional[str] = None
trailer: Optional[str] = None
system: Optional[str] = None
processor: Optional[str] = None
@@ -25,6 +23,12 @@ class GameBase(GameCardBase):
graphics: Optional[str] = None
storage: Optional[str] = None
developer: Optional[str] = None
language: Optional[str] = None
release_date: Optional[str] = None
download_size: Optional[str] = None
class GameCreate(GameBase):
pass
@@ -32,7 +36,8 @@ class GameCreate(GameBase):
class Game(GameBase):
id: int
upload_date: str | None
update_date: str
upload_date: str
owner_id: int
class Config:

View File

@@ -46,18 +46,34 @@ async def save_image(cover: UploadFile, type: Literal["cover", "screenshot"]):
cover_data = await cover.read()
if (isinstance(cover_data, str)):
raise ValueError("Invalid image file")
await full_size_file.write(cover_data)
image = Image.open(BytesIO(cover_data))
compressed_coefficient = (image.size[0] * image.size[1]) / (1280*720/4)
cover_full_size = Image.open(BytesIO(cover_data))
compressed_coefficient = (cover_full_size.size[0] *
cover_full_size.size[1]) / (1920*1080)
if (compressed_coefficient < 1):
compressed_coefficient = 1
compressed_image = image.resize(
(int(image.size[0] / compressed_coefficient),
int(image.size[1] / compressed_coefficient))
cover_full_size = cover_full_size.resize(
(int(cover_full_size.size[0] / compressed_coefficient),
int(cover_full_size.size[1] / compressed_coefficient))
)
buf = BytesIO()
cover_full_size.save(
buf, format=cover.content_type.upper().replace("IMAGE/", ""))
await full_size_file.write(buf.getbuffer())
cover_preview = Image.open(BytesIO(cover_data))
compressed_coefficient /= 4
if (compressed_coefficient < 1):
compressed_coefficient = 1
cover_preview = cover_preview.resize(
(int(cover_preview.size[0] / compressed_coefficient),
int(cover_preview.size[1] / compressed_coefficient))
)
buf = BytesIO()
compressed_image.save(
cover_preview.save(
buf, format=cover.content_type.upper().replace("IMAGE/", ""))
await preview_file.write(buf.getbuffer())
return hash_filename