first commit

This commit is contained in:
2026-02-13 17:00:52 -06:00
commit 07a6d7069f
49 changed files with 763 additions and 0 deletions

View File

@@ -0,0 +1,99 @@
from sqlalchemy.orm import Session
from sqlalchemy.exc import IntegrityError
from domain.MicroservicioA import MicroservicioA
from application.ports.microservicio_a_repository import MicroservicioARepository
from infrastructure.adapters.persistence.db import SessionLocal
from infrastructure.adapters.persistence.models import MsaModel
from application.exceptions import MicroserviceAlreadyExists
class SqlMicroservicioARepository(MicroservicioARepository):
def __init__(self):
self.db: Session = SessionLocal()
def save(self, msa: MicroservicioA):
model = MsaModel(
perfiles=msa.perfiles,
idioma=msa.idioma,
calidad=msa.calidad
)
self.db.add(model)
try:
self.db.commit()
except IntegrityError:
self.db.rollback()
raise MicroserviceAlreadyExists("There's already one registry with that data.")
self.db.refresh(model)
return MicroservicioA(
msa_id = model.msa_id,
perfiles=model.perfiles,
idioma=model.idioma,
calidad=model.calidad
)
def viewAll(self) -> list[MicroservicioA]:
models = self.db.query(MsaModel).all()
return [
MicroservicioA(
msa_id=model.msa_id,
perfiles=model.perfiles,
idioma=model.idioma,
calidad=model.calidad
) for model in models
]
def viewById(self, msa_id: int) -> MicroservicioA | None:
model = self.db.query(MsaModel).filter(MsaModel.msa_id == msa_id).first()
if not model:
return None
return MicroservicioA(
msa_id=model.msa_id,
perfiles=model.perfiles,
idioma=model.idioma,
calidad=model.calidad
)
def remove(self, msa_id: int):
model = self.db.query(MsaModel).filter(MsaModel.msa_id == msa_id).first()
if not model:
return False
try:
self.db.delete(model)
self.db.commit()
return True
except IntegrityError:
self.db.rollback()
raise MicroserviceAlreadyExists("There's already one registry with that data.")
def editById(self, msa_id: int, msa: MicroservicioA) -> MicroservicioA | None:
model = self.db.query(MsaModel).filter(MsaModel.msa_id == msa_id).first()
if not model:
return None
try:
model.perfiles = msa.perfiles
model.idioma = msa.idioma
model.calidad = msa.calidad
self.db.commit()
self.db.refresh(model)
return MicroservicioA(
msa_id=model.msa_id,
perfiles=model.perfiles,
idioma=model.idioma,
calidad=model.calidad
)
except IntegrityError:
self.db.rollback()
raise MicroserviceAlreadyExists("There's already one registry with that data.")