From 74faa578057615aee75396b9591a4679d3a74006 Mon Sep 17 00:00:00 2001 From: AlexSserb Date: Fri, 9 May 2025 16:19:18 +0400 Subject: [PATCH] feat: worktime table with dates range --- schemas/time_tracking.py | 4 ++-- services/time_tracking.py | 25 ++++++++++--------------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/schemas/time_tracking.py b/schemas/time_tracking.py index b38eadc..9bc7cf8 100644 --- a/schemas/time_tracking.py +++ b/schemas/time_tracking.py @@ -23,8 +23,8 @@ class TimeTrackingRecord(BaseSchema): # region Requests class GetTimeTrackingRecordsRequest(BaseSchema): - date: datetime.date - user_ids: list[int] + date_from: datetime.date + date_to: datetime.date class UpdateTimeTrackingRecordRequest(BaseSchema): diff --git a/services/time_tracking.py b/services/time_tracking.py index d76c361..58a70ac 100644 --- a/services/time_tracking.py +++ b/services/time_tracking.py @@ -1,6 +1,6 @@ from collections import defaultdict -from sqlalchemy import select, func +from sqlalchemy import select from sqlalchemy.orm import joinedload from models import PaymentRecord, User @@ -26,13 +26,11 @@ class TimeTrackingService(BaseService): PaymentRecord.user_id == User.id ) .where( - func.date(func.date_trunc('month', PaymentRecord.start_date)) == request.date, - func.date(func.date_trunc('month', PaymentRecord.end_date)) == request.date, + PaymentRecord.start_date.between(request.date_from, request.date_to), PaymentRecord.start_date == PaymentRecord.end_date, User.is_deleted == False - - # PaymentRecord.user_id.in_(request.user_ids) ) + .order_by(User.id) ) query_result = (await self.session.scalars(stmt)).all() records_dict = defaultdict(list) @@ -58,17 +56,14 @@ class TimeTrackingService(BaseService): data=data_list, total_amount=amount ) - records.append( - record - ) - return GetTimeTrackingRecordsResponse( - records=records - ) + records.append(record) + return GetTimeTrackingRecordsResponse(records=records) - async def update_record(self, - user: User, - request: UpdateTimeTrackingRecordRequest - ) -> UpdateTimeTrackingRecordResponse: + async def update_record( + self, + user: User, + request: UpdateTimeTrackingRecordRequest + ) -> UpdateTimeTrackingRecordResponse: try: record_user = await UserService(self.session).get_by_id(user_id=request.user_id) if not record_user: