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