One_Piece_Bounty_Bot / src /model /CrewJoinRequest.py
github-actions[bot]
Automated sync from GitHub
71e71e8
Raw
History Blame Contribute Delete
2.05 kB
import datetime
from peewee import *
import resources.Environment as Env
from src.model.BaseModel import BaseModel
from src.model.Crew import Crew
from src.model.User import User
from src.model.enums.crew.CrewJoinRequestStatus import CrewJoinRequestStatus
class CrewJoinRequest(BaseModel):
"""
CrewJoinRequest class
"""
user: User | ForeignKeyField = ForeignKeyField(User, backref="crew_join_requests")
crew: Crew | ForeignKeyField = ForeignKeyField(Crew, backref="crew_join_requests")
status: CrewJoinRequestStatus | SmallIntegerField = SmallIntegerField(
default=CrewJoinRequestStatus.PENDING
)
class Meta:
db_table = "crew_join_request"
@staticmethod
def get_all_requests_in_cooldown_period(user: User) -> list["CrewJoinRequest"]:
"""
Get all requests of a user in the cooldown period
:param user: The user object
:return: The list of requests
"""
return (
CrewJoinRequest.select()
.where(
CrewJoinRequest.user == user,
CrewJoinRequest.date
> datetime.datetime.now()
- datetime.timedelta(hours=Env.CREW_JOIN_REQUEST_COOLDOWN_DURATION.get_int()),
)
.order_by(CrewJoinRequest.date.asc())
)
@staticmethod
def get_all_requests_in_cooldown_period_for_crew(
user: User, crew: Crew
) -> list["CrewJoinRequest"]:
"""
Get all requests of a user for a given crew in the cooldown period
:param user: The user object
:param crew: The crew object
:return: The list of requests
"""
return CrewJoinRequest.select().where(
CrewJoinRequest.user == user,
CrewJoinRequest.crew == crew,
CrewJoinRequest.date
> datetime.datetime.now()
- datetime.timedelta(
hours=Env.CREW_JOIN_REQUEST_COOLDOWN_SAME_CREW_DURATION.get_int()
),
)
CrewJoinRequest.create_table()