crappy
This commit is contained in:
		@@ -1,5 +1,5 @@
 | 
				
			|||||||
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, BigInteger
 | 
					from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, BigInteger
 | 
				
			||||||
from sqlalchemy.orm import relationship, backref
 | 
					from sqlalchemy.orm import relationship
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from models import BaseModel
 | 
					from models import BaseModel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -12,6 +12,8 @@ class Client(BaseModel):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    products = relationship('Product', back_populates='client')
 | 
					    products = relationship('Product', back_populates='client')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    details = relationship('ClientDetails', uselist=False, back_populates='client', cascade='all, delete')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ClientDetails(BaseModel):
 | 
					class ClientDetails(BaseModel):
 | 
				
			||||||
    __tablename__ = 'client_details'
 | 
					    __tablename__ = 'client_details'
 | 
				
			||||||
@@ -19,7 +21,7 @@ class ClientDetails(BaseModel):
 | 
				
			|||||||
    id = Column(Integer, autoincrement=True, primary_key=True, index=True)
 | 
					    id = Column(Integer, autoincrement=True, primary_key=True, index=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    client_id = Column(Integer, ForeignKey('clients.id'), unique=True, nullable=False, comment='ID клиента')
 | 
					    client_id = Column(Integer, ForeignKey('clients.id'), unique=True, nullable=False, comment='ID клиента')
 | 
				
			||||||
    client = relationship('Client', backref=backref('details', uselist=False))
 | 
					    client = relationship('Client', back_populates='details', cascade='all, delete', uselist=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    address = Column(String)
 | 
					    address = Column(String)
 | 
				
			||||||
    phone_number = Column(String)
 | 
					    phone_number = Column(String)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,8 +5,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
from backend.session import get_session
 | 
					from backend.session import get_session
 | 
				
			||||||
from models import User
 | 
					from models import User
 | 
				
			||||||
from schemas.client import ClientSearchRequest, ClientUpdateDetailsRequest, ClientUpdateDetailsResponse, \
 | 
					from schemas.client import *
 | 
				
			||||||
    ClientGetAllResponse
 | 
					 | 
				
			||||||
from services.auth import get_current_user
 | 
					from services.auth import get_current_user
 | 
				
			||||||
from services.client import ClientService
 | 
					from services.client import ClientService
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -48,3 +47,41 @@ async def get_all_clients(
 | 
				
			|||||||
        session: Annotated[AsyncSession, Depends(get_session)],
 | 
					        session: Annotated[AsyncSession, Depends(get_session)],
 | 
				
			||||||
):
 | 
					):
 | 
				
			||||||
    return await ClientService(session).get_all()
 | 
					    return await ClientService(session).get_all()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@client_router.post(
 | 
				
			||||||
 | 
					    '/create',
 | 
				
			||||||
 | 
					    operation_id='create_client',
 | 
				
			||||||
 | 
					    response_model=ClientCreateResponse
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					async def create_client(
 | 
				
			||||||
 | 
					        request: ClientCreateRequest,
 | 
				
			||||||
 | 
					        user: Annotated[User, Depends(get_current_user)],
 | 
				
			||||||
 | 
					        session: Annotated[AsyncSession, Depends(get_session)]
 | 
				
			||||||
 | 
					):
 | 
				
			||||||
 | 
					    return await ClientService(session).create(request, user)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@client_router.post(
 | 
				
			||||||
 | 
					    '/update',
 | 
				
			||||||
 | 
					    operation_id='update_client',
 | 
				
			||||||
 | 
					    response_model=ClientUpdateResponse
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					async def update_client(
 | 
				
			||||||
 | 
					        request: ClientUpdateRequest,
 | 
				
			||||||
 | 
					        user: Annotated[User, Depends(get_current_user)],
 | 
				
			||||||
 | 
					        session: Annotated[AsyncSession, Depends(get_session)]
 | 
				
			||||||
 | 
					):
 | 
				
			||||||
 | 
					    return await ClientService(session).update(request, user)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@client_router.post(
 | 
				
			||||||
 | 
					    '/delete',
 | 
				
			||||||
 | 
					    operation_id='delete_client',
 | 
				
			||||||
 | 
					    response_model=ClientDeleteResponse
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					async def delete_client(
 | 
				
			||||||
 | 
					        request: ClientDeleteRequest,
 | 
				
			||||||
 | 
					        session: Annotated[AsyncSession, Depends(get_session)]
 | 
				
			||||||
 | 
					):
 | 
				
			||||||
 | 
					    return await ClientService(session).delete(request)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
from typing import List
 | 
					from typing import List
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from schemas.base import CustomModelCamel
 | 
					from schemas.base import CustomModelCamel, OkMessageSchema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ClientDetailsSchema(CustomModelCamel):
 | 
					class ClientDetailsSchema(CustomModelCamel):
 | 
				
			||||||
@@ -20,11 +20,6 @@ class ClientSearchRequest(CustomModelCamel):
 | 
				
			|||||||
    name: str
 | 
					    name: str
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ClientCreateRequest(CustomModelCamel):
 | 
					 | 
				
			||||||
    name: str
 | 
					 | 
				
			||||||
    address: str
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class ClientSearchResponse(CustomModelCamel):
 | 
					class ClientSearchResponse(CustomModelCamel):
 | 
				
			||||||
    clients: List[ClientSchema]
 | 
					    clients: List[ClientSchema]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -40,3 +35,27 @@ class ClientUpdateDetailsResponse(CustomModelCamel):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class ClientGetAllResponse(CustomModelCamel):
 | 
					class ClientGetAllResponse(CustomModelCamel):
 | 
				
			||||||
    clients: List[ClientSchema]
 | 
					    clients: List[ClientSchema]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ClientCreateResponse(OkMessageSchema):
 | 
				
			||||||
 | 
					    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ClientCreateRequest(CustomModelCamel):
 | 
				
			||||||
 | 
					    data: ClientSchema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ClientUpdateRequest(CustomModelCamel):
 | 
				
			||||||
 | 
					    data: ClientSchema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ClientUpdateResponse(OkMessageSchema):
 | 
				
			||||||
 | 
					    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ClientDeleteRequest(CustomModelCamel):
 | 
				
			||||||
 | 
					    client_id: int
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ClientDeleteResponse(OkMessageSchema):
 | 
				
			||||||
 | 
					    pass
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,3 +72,37 @@ class ClientService(BaseService):
 | 
				
			|||||||
        for client in query.all():
 | 
					        for client in query.all():
 | 
				
			||||||
            clients.append(ClientSchema.model_validate(client))
 | 
					            clients.append(ClientSchema.model_validate(client))
 | 
				
			||||||
        return ClientSearchResponse(clients=clients)
 | 
					        return ClientSearchResponse(clients=clients)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    async def create(self, request: ClientCreateRequest, user: User) -> ClientCreateResponse:
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            client = await self.get_by_name(request.data.name)
 | 
				
			||||||
 | 
					            if client:
 | 
				
			||||||
 | 
					                return ClientCreateResponse(ok=False, message='Client already exists')
 | 
				
			||||||
 | 
					            await self.create_client_raw(user, request.data.name, request.data.details)
 | 
				
			||||||
 | 
					            await self.session.commit()
 | 
				
			||||||
 | 
					            return ClientCreateResponse(ok=True, message='Client created')
 | 
				
			||||||
 | 
					        except Exception as e:
 | 
				
			||||||
 | 
					            return ClientCreateResponse(ok=False, message=str(e))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    async def update(self, request: ClientUpdateRequest, user: User) -> ClientUpdateResponse:
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            client = await self.get_by_id(request.data.id)
 | 
				
			||||||
 | 
					            if not client:
 | 
				
			||||||
 | 
					                return ClientUpdateResponse(ok=False, message='Client not found')
 | 
				
			||||||
 | 
					            await self.session.execute(update(Client).where(Client.id == client.id).values(name=request.data.name))
 | 
				
			||||||
 | 
					            await self.update_details(user, client, request.data.details)
 | 
				
			||||||
 | 
					            await self.session.commit()
 | 
				
			||||||
 | 
					            return ClientUpdateResponse(ok=True, message='Client updated')
 | 
				
			||||||
 | 
					        except Exception as e:
 | 
				
			||||||
 | 
					            return ClientUpdateResponse(ok=False, message=str(e))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    async def delete(self, request: ClientDeleteRequest) -> ClientDeleteResponse:
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            client = await self.get_by_id(request.client_id)
 | 
				
			||||||
 | 
					            if not client:
 | 
				
			||||||
 | 
					                return ClientDeleteResponse(ok=False, message='Client not found')
 | 
				
			||||||
 | 
					            await self.session.delete(client)
 | 
				
			||||||
 | 
					            await self.session.commit()
 | 
				
			||||||
 | 
					            return ClientDeleteResponse(ok=True, message='Client deleted')
 | 
				
			||||||
 | 
					        except Exception as e:
 | 
				
			||||||
 | 
					            return ClientDeleteResponse(ok=False, message=str(e))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,8 @@
 | 
				
			|||||||
from typing import Annotated
 | 
					import string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_v():
 | 
					def main():
 | 
				
			||||||
    return 123
 | 
					    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
ockho: Annotated[int, get_v]
 | 
					    main()
 | 
				
			||||||
print(ockho)
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user