feat: deal status history and default created_at in db

This commit is contained in:
2025-08-26 18:12:28 +04:00
parent b776ad6758
commit 4c7a997be6
7 changed files with 54 additions and 18 deletions

View File

@ -29,9 +29,7 @@ class BoardRepository(BaseRepository):
return result.scalar_one_or_none()
async def create(self, data: CreateBoardSchema) -> Board:
board_data = data.model_dump()
board_data["created_at"] = datetime.now(timezone.utc)
board = Board(**board_data)
board = Board(**data.model_dump())
self.session.add(board)
await self.session.commit()
await self.session.refresh(board)

View File

@ -1,9 +1,8 @@
from datetime import datetime, timezone
from typing import Optional
from sqlalchemy import select
from models import Deal
from models import Deal, CardStatusHistory
from repositories.base import BaseRepository
from schemas.deal import UpdateDealSchema, CreateDealSchema
@ -24,9 +23,7 @@ class DealRepository(BaseRepository):
return result.scalar_one_or_none()
async def create(self, data: CreateDealSchema) -> Deal:
deal_data = data.model_dump()
deal_data["created_at"] = datetime.now(timezone.utc)
deal = Deal(**deal_data)
deal = Deal(**data.model_dump())
self.session.add(deal)
await self.session.commit()
await self.session.refresh(deal)
@ -35,7 +32,15 @@ class DealRepository(BaseRepository):
async def update(self, deal: Deal, data: UpdateDealSchema) -> Deal:
deal.lexorank = data.lexorank if data.lexorank else deal.lexorank
deal.name = data.name if data.name else deal.name
deal.status_id = data.status_id if data.status_id else deal.status_id
if data.status_id and deal.status_id != data.status_id:
deal.status_history.append(
CardStatusHistory(
from_status_id=deal.status_id,
to_status_id=data.status_id,
)
)
deal.status_id = data.status_id
self.session.add(deal)
await self.session.commit()

View File

@ -25,9 +25,7 @@ class ProjectRepository(BaseRepository):
return result.scalar_one_or_none()
async def create(self, data: CreateProjectSchema) -> Project:
project_data = data.model_dump()
project_data["created_at"] = datetime.now(timezone.utc)
project = Project(**project_data)
project = Project(**data.model_dump())
self.session.add(project)
await self.session.commit()
await self.session.refresh(project)