версия ленивого Кирилла
This commit is contained in:
@@ -3,7 +3,7 @@ from sqlalchemy.orm import Session
|
||||
|
||||
from personal_info.db.session import get_session
|
||||
|
||||
from .people import PersonService
|
||||
from .persons import PersonService
|
||||
|
||||
def get_persons_service(db_session: Session = Depends(get_session)) -> PersonService:
|
||||
return PersonService(db_session)
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
from typing import Any
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from personal_info.db.models import Person
|
||||
from personal_info.db.schemas import PersonCreate
|
||||
|
||||
from personal_info.services.base import BaseService
|
||||
|
||||
class PersonService(BaseService[Person, PersonCreate, Any]):
|
||||
def __init__(self, db_session: Session):
|
||||
super(PersonService, self).__init__(Person, db_session)
|
||||
|
||||
# def create(self, obj: PersonCreate) -> Person:
|
||||
|
||||
# person: Person = Person()
|
||||
# self.db_session.add(person)
|
||||
# self.db_session.flush()
|
||||
# self.db_session.commit()
|
||||
# return person
|
||||
39
src/personal_info/services/persons.py
Normal file
39
src/personal_info/services/persons.py
Normal file
@@ -0,0 +1,39 @@
|
||||
from typing import Any
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from personal_info.db.models import Person, Address, Document, Contact
|
||||
from personal_info.db.schemas import PersonCreate, PersonBase
|
||||
|
||||
from personal_info.services.base import BaseService
|
||||
|
||||
class PersonService(BaseService[Person, PersonCreate, Any]):
|
||||
def __init__(self, db_session: Session):
|
||||
super(PersonService, self).__init__(Person, db_session)
|
||||
|
||||
def create(self, obj: PersonCreate) -> Person:
|
||||
print('= raw' * 3 )
|
||||
print(obj)
|
||||
person_obj = PersonBase(**obj.dict())
|
||||
person = super(PersonService, self).create(person_obj)
|
||||
|
||||
addresses = [
|
||||
Address(**address.dict(), person_id=person.id) for address in obj.addresses
|
||||
]
|
||||
self.db_session.add_all(addresses)
|
||||
self.db_session.commit()
|
||||
|
||||
documents = [
|
||||
Document(**document.dict(), person_id=person.id) for document in obj.documents
|
||||
]
|
||||
self.db_session.add_all(documents)
|
||||
self.db_session.commit()
|
||||
|
||||
contacts = [
|
||||
Contact(**contact.dict(), person_id=person.id) for contact in obj.contacts
|
||||
]
|
||||
self.db_session.add_all(contacts)
|
||||
self.db_session.commit()
|
||||
|
||||
return person
|
||||
|
||||
Reference in New Issue
Block a user