Files
astra-personal-information/src/personal_info/services/persons.py
2023-07-18 01:27:43 +03:00

40 lines
1.1 KiB
Python

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