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