Spaces:
Sleeping
Sleeping
pdrMottaS commited on
Commit ·
ff31df8
1
Parent(s): 43059ab
add categoria and queries
Browse files- Dockerfile +0 -5
- README.md +26 -10
- controller/__init__.py +3 -1
- controller/query_controller.py +21 -0
- database.db +0 -0
- main.py +2 -1
- model/__init__.py +3 -1
- model/categoria.py +10 -0
- model/unidade_escolar.py +3 -0
- schema/__init__.py +6 -1
- schema/categoria.py +7 -0
- schema/query.py +14 -0
- schema/unidade_escolar.py +3 -0
- service/__init__.py +3 -1
- service/query_service.py +80 -0
- service/unidade_escolar_service.py +7 -1
Dockerfile
CHANGED
|
@@ -1,11 +1,6 @@
|
|
| 1 |
FROM python:3.9
|
| 2 |
-
|
| 3 |
WORKDIR /code
|
| 4 |
-
|
| 5 |
COPY ./requirements.txt /code/requirements.txt
|
| 6 |
-
|
| 7 |
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
|
| 8 |
-
|
| 9 |
COPY . .
|
| 10 |
-
|
| 11 |
CMD ["python3","main.py"]
|
|
|
|
| 1 |
FROM python:3.9
|
|
|
|
| 2 |
WORKDIR /code
|
|
|
|
| 3 |
COPY ./requirements.txt /code/requirements.txt
|
|
|
|
| 4 |
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
|
|
|
|
| 5 |
COPY . .
|
|
|
|
| 6 |
CMD ["python3","main.py"]
|
README.md
CHANGED
|
@@ -1,10 +1,26 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Arquitetura de microsserviços
|
| 2 |
+
|
| 3 |
+
Diferentemente das arquiteturas monolíticas, a arquitetura orientada a microsserviços descreve que cada funcionalidade deve ser desenvolvida de forma independente, permitindo que o tie de desenvolvimento possa atualizar ou modificar alguma feature sem que outra seja afetada.
|
| 4 |
+
|
| 5 |
+
## Projeto AFA-BD
|
| 6 |
+
|
| 7 |
+
### Arquitetura atual
|
| 8 |
+
|
| 9 |
+

|
| 10 |
+
|
| 11 |
+
Pontos para melhoria:
|
| 12 |
+
|
| 13 |
+
- Escalar horizontalmente a aplicação custaria muito recurso, já que seria necessário escalar todas as funcionalidades
|
| 14 |
+
- Manutenção custosa, ja que todas as funcionalidades estão acopladas
|
| 15 |
+
|
| 16 |
+
### Arquitetura em microsserviços
|
| 17 |
+
|
| 18 |
+

|
| 19 |
+
|
| 20 |
+
Serviços para a nova arquitetura:
|
| 21 |
+
|
| 22 |
+
- Frontend: camada de interação direta com o usuário
|
| 23 |
+
- Backend: camada para operações na camada de persistência (BD)
|
| 24 |
+
- IA-Model: Camada para operações com modelos de ML/IA
|
| 25 |
+
|
| 26 |
+
Todos os serviços estarão sendo orquestrados com kubernetes
|
controller/__init__.py
CHANGED
|
@@ -6,6 +6,7 @@ from .cidade_controller import router as cidade_router
|
|
| 6 |
from .tipo_escola_controller import router as tipo_escola_router
|
| 7 |
from .unidade_escolar_controller import router as unidade_escolar_router
|
| 8 |
from .endereco_controller import router as endereco_router
|
|
|
|
| 9 |
|
| 10 |
__all__ = [
|
| 11 |
'session_router',
|
|
@@ -15,5 +16,6 @@ __all__ = [
|
|
| 15 |
'cidade_router',
|
| 16 |
'tipo_escola_router',
|
| 17 |
'unidade_escolar_router',
|
| 18 |
-
'endereco_router'
|
|
|
|
| 19 |
]
|
|
|
|
| 6 |
from .tipo_escola_controller import router as tipo_escola_router
|
| 7 |
from .unidade_escolar_controller import router as unidade_escolar_router
|
| 8 |
from .endereco_controller import router as endereco_router
|
| 9 |
+
from .query_controller import router as query_router
|
| 10 |
|
| 11 |
__all__ = [
|
| 12 |
'session_router',
|
|
|
|
| 16 |
'cidade_router',
|
| 17 |
'tipo_escola_router',
|
| 18 |
'unidade_escolar_router',
|
| 19 |
+
'endereco_router',
|
| 20 |
+
'query_router'
|
| 21 |
]
|
controller/query_controller.py
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from fastapi import APIRouter, Depends
|
| 2 |
+
from model import Login
|
| 3 |
+
from schema import Query201,Query202
|
| 4 |
+
from service import QueryService,SessionService
|
| 5 |
+
from typing import Annotated,List
|
| 6 |
+
|
| 7 |
+
router = APIRouter(
|
| 8 |
+
prefix='/query'
|
| 9 |
+
)
|
| 10 |
+
|
| 11 |
+
service = SessionService()
|
| 12 |
+
|
| 13 |
+
@router.get('/201',response_model=List[Query201])
|
| 14 |
+
def runquery201(user: Annotated[Login,Depends(service.validate_token)]):
|
| 15 |
+
query_service = QueryService()
|
| 16 |
+
return query_service.query201()
|
| 17 |
+
|
| 18 |
+
@router.get('/202',response_model=List[Query202])
|
| 19 |
+
def runquery202(user: Annotated[Login,Depends(service.validate_token)]):
|
| 20 |
+
query_service = QueryService()
|
| 21 |
+
return query_service.query202()
|
database.db
CHANGED
|
Binary files a/database.db and b/database.db differ
|
|
|
main.py
CHANGED
|
@@ -2,7 +2,7 @@ from fastapi import FastAPI
|
|
| 2 |
import uvicorn
|
| 3 |
from fastapi.middleware.cors import CORSMiddleware
|
| 4 |
|
| 5 |
-
from controller import session_router,user_router,role_router,regiao_router,cidade_router,tipo_escola_router,unidade_escolar_router,endereco_router
|
| 6 |
|
| 7 |
app = FastAPI()
|
| 8 |
|
|
@@ -24,5 +24,6 @@ app.include_router(cidade_router)
|
|
| 24 |
app.include_router(tipo_escola_router)
|
| 25 |
app.include_router(unidade_escolar_router)
|
| 26 |
app.include_router(endereco_router)
|
|
|
|
| 27 |
|
| 28 |
uvicorn.run(app,host='0.0.0.0',port=7860)
|
|
|
|
| 2 |
import uvicorn
|
| 3 |
from fastapi.middleware.cors import CORSMiddleware
|
| 4 |
|
| 5 |
+
from controller import query_router,session_router,user_router,role_router,regiao_router,cidade_router,tipo_escola_router,unidade_escolar_router,endereco_router
|
| 6 |
|
| 7 |
app = FastAPI()
|
| 8 |
|
|
|
|
| 24 |
app.include_router(tipo_escola_router)
|
| 25 |
app.include_router(unidade_escolar_router)
|
| 26 |
app.include_router(endereco_router)
|
| 27 |
+
app.include_router(query_router)
|
| 28 |
|
| 29 |
uvicorn.run(app,host='0.0.0.0',port=7860)
|
model/__init__.py
CHANGED
|
@@ -5,6 +5,7 @@ from .tipo_escola import TipoEscola
|
|
| 5 |
from .endereco import Endereco
|
| 6 |
from .cidade import Cidade
|
| 7 |
from .regiao import Regiao
|
|
|
|
| 8 |
|
| 9 |
__all__ = [
|
| 10 |
"Login",
|
|
@@ -13,5 +14,6 @@ __all__ = [
|
|
| 13 |
"TipoEscola",
|
| 14 |
"Endereco",
|
| 15 |
"Cidade",
|
| 16 |
-
"Regiao"
|
|
|
|
| 17 |
]
|
|
|
|
| 5 |
from .endereco import Endereco
|
| 6 |
from .cidade import Cidade
|
| 7 |
from .regiao import Regiao
|
| 8 |
+
from .categoria import Categoria
|
| 9 |
|
| 10 |
__all__ = [
|
| 11 |
"Login",
|
|
|
|
| 14 |
"TipoEscola",
|
| 15 |
"Endereco",
|
| 16 |
"Cidade",
|
| 17 |
+
"Regiao",
|
| 18 |
+
"Categoria"
|
| 19 |
]
|
model/categoria.py
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from database import Base
|
| 2 |
+
from sqlalchemy import Column, Integer,String, ForeignKey
|
| 3 |
+
from sqlalchemy.orm import Mapped,relationship
|
| 4 |
+
|
| 5 |
+
class Categoria(Base):
|
| 6 |
+
__tablename__ = "categoria_escolar"
|
| 7 |
+
|
| 8 |
+
id = Column("cat_id",Integer, primary_key=True,index=True)
|
| 9 |
+
description = Column("cat_descricao",String(255),nullable=False)
|
| 10 |
+
unidades = relationship("UnidadeEscolar", back_populates="categoria",lazy="selectin")
|
model/unidade_escolar.py
CHANGED
|
@@ -12,6 +12,9 @@ class UnidadeEscolar(Base):
|
|
| 12 |
id_tipo = Column("tip_id", Integer, ForeignKey("tipo_escola.tip_id"))
|
| 13 |
tipo = relationship("TipoEscola", back_populates="unidades", lazy="selectin")
|
| 14 |
|
|
|
|
|
|
|
|
|
|
| 15 |
id_endereco = Column("end_id", Integer, ForeignKey("endereco.end_id"))
|
| 16 |
endereco = relationship("Endereco", back_populates="unidades", lazy="selectin")
|
| 17 |
|
|
|
|
| 12 |
id_tipo = Column("tip_id", Integer, ForeignKey("tipo_escola.tip_id"))
|
| 13 |
tipo = relationship("TipoEscola", back_populates="unidades", lazy="selectin")
|
| 14 |
|
| 15 |
+
id_categoria = Column("cat_id", Integer, ForeignKey("categoria_escolar.cat_id"))
|
| 16 |
+
categoria = relationship("Categoria", back_populates="unidades", lazy="selectin")
|
| 17 |
+
|
| 18 |
id_endereco = Column("end_id", Integer, ForeignKey("endereco.end_id"))
|
| 19 |
endereco = relationship("Endereco", back_populates="unidades", lazy="selectin")
|
| 20 |
|
schema/__init__.py
CHANGED
|
@@ -6,6 +6,8 @@ from .cidade import CidadeBase,ResponseCidade,RequestCidade
|
|
| 6 |
from .tipo_escola import BaseTipoEscola,ResponseTipoEscola
|
| 7 |
from .endereco import ResponseEndereco,RequestEndereco
|
| 8 |
from .unidade_escolar import ResponseUnidadeEscolar,RequestUnidadeEscolar
|
|
|
|
|
|
|
| 9 |
|
| 10 |
__all__ = [
|
| 11 |
"RequestSession",
|
|
@@ -25,5 +27,8 @@ __all__ = [
|
|
| 25 |
"ResponseEndereco",
|
| 26 |
"ResponseUnidadeEscolar",
|
| 27 |
"RequestEndereco",
|
| 28 |
-
"RequestUnidadeEscolar"
|
|
|
|
|
|
|
|
|
|
| 29 |
]
|
|
|
|
| 6 |
from .tipo_escola import BaseTipoEscola,ResponseTipoEscola
|
| 7 |
from .endereco import ResponseEndereco,RequestEndereco
|
| 8 |
from .unidade_escolar import ResponseUnidadeEscolar,RequestUnidadeEscolar
|
| 9 |
+
from .categoria import ResponseCategoriaEscola
|
| 10 |
+
from .query import Query201,Query202
|
| 11 |
|
| 12 |
__all__ = [
|
| 13 |
"RequestSession",
|
|
|
|
| 27 |
"ResponseEndereco",
|
| 28 |
"ResponseUnidadeEscolar",
|
| 29 |
"RequestEndereco",
|
| 30 |
+
"RequestUnidadeEscolar",
|
| 31 |
+
"ResponseCategoriaEscola",
|
| 32 |
+
"Query201",
|
| 33 |
+
"Query202"
|
| 34 |
]
|
schema/categoria.py
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pydantic import BaseModel
|
| 2 |
+
|
| 3 |
+
class BaseCategoriaEscola(BaseModel):
|
| 4 |
+
descricao: str
|
| 5 |
+
|
| 6 |
+
class ResponseCategoriaEscola(BaseCategoriaEscola):
|
| 7 |
+
id: int
|
schema/query.py
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pydantic import BaseModel
|
| 2 |
+
from typing import List
|
| 3 |
+
from .unidade_escolar import ResponseUnidadeEscolar
|
| 4 |
+
|
| 5 |
+
class Query201(BaseModel):
|
| 6 |
+
regiao:str
|
| 7 |
+
count:int
|
| 8 |
+
unidades_escolares: List[ResponseUnidadeEscolar]
|
| 9 |
+
|
| 10 |
+
class Query202(BaseModel):
|
| 11 |
+
regiao:str
|
| 12 |
+
categoria:str
|
| 13 |
+
tipo:str
|
| 14 |
+
num_escolas:int
|
schema/unidade_escolar.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
from pydantic import BaseModel
|
| 2 |
from .tipo_escola import ResponseTipoEscola
|
| 3 |
from .endereco import ResponseEndereco,RequestEndereco
|
|
|
|
| 4 |
|
| 5 |
class UnidadeEscolarBase(BaseModel):
|
| 6 |
nome: str
|
|
@@ -9,8 +10,10 @@ class UnidadeEscolarBase(BaseModel):
|
|
| 9 |
class ResponseUnidadeEscolar(UnidadeEscolarBase):
|
| 10 |
id:int
|
| 11 |
tipo: ResponseTipoEscola
|
|
|
|
| 12 |
endereco: ResponseEndereco
|
| 13 |
|
| 14 |
class RequestUnidadeEscolar(UnidadeEscolarBase):
|
| 15 |
tipo_id: int
|
|
|
|
| 16 |
endereco: RequestEndereco
|
|
|
|
| 1 |
from pydantic import BaseModel
|
| 2 |
from .tipo_escola import ResponseTipoEscola
|
| 3 |
from .endereco import ResponseEndereco,RequestEndereco
|
| 4 |
+
from .categoria import ResponseCategoriaEscola
|
| 5 |
|
| 6 |
class UnidadeEscolarBase(BaseModel):
|
| 7 |
nome: str
|
|
|
|
| 10 |
class ResponseUnidadeEscolar(UnidadeEscolarBase):
|
| 11 |
id:int
|
| 12 |
tipo: ResponseTipoEscola
|
| 13 |
+
categoria:ResponseCategoriaEscola
|
| 14 |
endereco: ResponseEndereco
|
| 15 |
|
| 16 |
class RequestUnidadeEscolar(UnidadeEscolarBase):
|
| 17 |
tipo_id: int
|
| 18 |
+
categoria_id: int
|
| 19 |
endereco: RequestEndereco
|
service/__init__.py
CHANGED
|
@@ -6,6 +6,7 @@ from .cidade_service import CidadeService
|
|
| 6 |
from .tipo_escola_service import TipoEscolaService
|
| 7 |
from .unidade_escolar_service import UnidadeEscolarService
|
| 8 |
from .endereco_service import EnderecoService
|
|
|
|
| 9 |
|
| 10 |
__all__ = [
|
| 11 |
'SessionService',
|
|
@@ -15,5 +16,6 @@ __all__ = [
|
|
| 15 |
'CidadeService',
|
| 16 |
'TipoEscolaService',
|
| 17 |
'UnidadeEscolarService',
|
| 18 |
-
'EnderecoService'
|
|
|
|
| 19 |
]
|
|
|
|
| 6 |
from .tipo_escola_service import TipoEscolaService
|
| 7 |
from .unidade_escolar_service import UnidadeEscolarService
|
| 8 |
from .endereco_service import EnderecoService
|
| 9 |
+
from .query_service import QueryService
|
| 10 |
|
| 11 |
__all__ = [
|
| 12 |
'SessionService',
|
|
|
|
| 16 |
'CidadeService',
|
| 17 |
'TipoEscolaService',
|
| 18 |
'UnidadeEscolarService',
|
| 19 |
+
'EnderecoService',
|
| 20 |
+
'QueryService'
|
| 21 |
]
|
service/query_service.py
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from database import SessionLocal
|
| 2 |
+
from sqlalchemy import func
|
| 3 |
+
from sqlalchemy.orm import joinedload
|
| 4 |
+
from model import UnidadeEscolar,Endereco,Cidade,Regiao,Categoria,TipoEscola
|
| 5 |
+
from schema import ResponseUnidadeEscolar,ResponseTipoEscola,ResponseEndereco,ResponseCategoriaEscola,Query201,Query202
|
| 6 |
+
|
| 7 |
+
class QueryService:
|
| 8 |
+
|
| 9 |
+
def query201(self):
|
| 10 |
+
with SessionLocal() as db:
|
| 11 |
+
query_result = db.query(
|
| 12 |
+
Regiao.descricao,
|
| 13 |
+
UnidadeEscolar
|
| 14 |
+
).join(Cidade, Regiao.id == Cidade.id_regiao
|
| 15 |
+
).join(Endereco, Cidade.id == Endereco.id_cidade
|
| 16 |
+
).join(UnidadeEscolar, Endereco.id == UnidadeEscolar.id_endereco
|
| 17 |
+
).options(
|
| 18 |
+
joinedload(UnidadeEscolar.tipo),
|
| 19 |
+
joinedload(UnidadeEscolar.endereco).joinedload(Endereco.cidade).joinedload(Cidade.regiao)
|
| 20 |
+
).group_by(Regiao.descricao, UnidadeEscolar.id).all()
|
| 21 |
+
result_dict = {}
|
| 22 |
+
for regiao,unidade in query_result:
|
| 23 |
+
if regiao not in result_dict:
|
| 24 |
+
result_dict[regiao] = {'count': 0, 'unidades_escolares': []}
|
| 25 |
+
result_dict[regiao]['count'] += 1
|
| 26 |
+
result_dict[regiao]['unidades_escolares'].append(
|
| 27 |
+
ResponseUnidadeEscolar(
|
| 28 |
+
nome=unidade.nome,
|
| 29 |
+
cod_inep=unidade.cod_inep,
|
| 30 |
+
id=unidade.id,
|
| 31 |
+
tipo=ResponseTipoEscola(
|
| 32 |
+
id=unidade.tipo.id,
|
| 33 |
+
descricao=unidade.tipo.description
|
| 34 |
+
),
|
| 35 |
+
categoria=ResponseCategoriaEscola(
|
| 36 |
+
id = unidade.categoria.id,
|
| 37 |
+
descricao=unidade.categoria.description
|
| 38 |
+
),
|
| 39 |
+
endereco=ResponseEndereco(
|
| 40 |
+
id=unidade.endereco.id,
|
| 41 |
+
rua=unidade.endereco.rua,
|
| 42 |
+
numero=unidade.endereco.numero,
|
| 43 |
+
cep=unidade.endereco.cep,
|
| 44 |
+
cidade=unidade.endereco.cidade.nome,
|
| 45 |
+
regiao=unidade.endereco.cidade.regiao.descricao
|
| 46 |
+
)
|
| 47 |
+
)
|
| 48 |
+
)
|
| 49 |
+
return [
|
| 50 |
+
Query201(regiao=regiao, count=data['count'], unidades_escolares=data['unidades_escolares'])
|
| 51 |
+
for regiao, data in result_dict.items()
|
| 52 |
+
]
|
| 53 |
+
|
| 54 |
+
def query202(self):
|
| 55 |
+
with SessionLocal() as db:
|
| 56 |
+
query_result = db.query(
|
| 57 |
+
Regiao.descricao.label("regiao_nome"),
|
| 58 |
+
Categoria.description.label("categoria"),
|
| 59 |
+
TipoEscola.description.label("tipo_escola"),
|
| 60 |
+
func.count(UnidadeEscolar.id).label("num_unidades")
|
| 61 |
+
).join(
|
| 62 |
+
Cidade
|
| 63 |
+
).join(
|
| 64 |
+
Endereco
|
| 65 |
+
).join(
|
| 66 |
+
UnidadeEscolar
|
| 67 |
+
).join(
|
| 68 |
+
Categoria
|
| 69 |
+
).join(
|
| 70 |
+
TipoEscola
|
| 71 |
+
).group_by(
|
| 72 |
+
Regiao.descricao,
|
| 73 |
+
Categoria.description,
|
| 74 |
+
TipoEscola.description
|
| 75 |
+
).all()
|
| 76 |
+
return [
|
| 77 |
+
Query202(regiao=result.regiao_nome,categoria=result.categoria,tipo=result.tipo_escola,num_escolas=result.num_unidades)
|
| 78 |
+
for result in query_result
|
| 79 |
+
]
|
| 80 |
+
|
service/unidade_escolar_service.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
from database import SessionLocal
|
| 2 |
from model import UnidadeEscolar,Endereco,Cidade
|
| 3 |
from exception import unidade_escolar_not_found
|
| 4 |
-
from schema import ResponseUnidadeEscolar, ResponseTipoEscola, ResponseEndereco, RequestUnidadeEscolar
|
| 5 |
from sqlalchemy.orm import joinedload
|
| 6 |
from .endereco_service import EnderecoService
|
| 7 |
|
|
@@ -18,6 +18,10 @@ class UnidadeEscolarService:
|
|
| 18 |
id=unidade_escolar.tipo.id,
|
| 19 |
descricao=unidade_escolar.tipo.description
|
| 20 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
endereco = ResponseEndereco(
|
| 22 |
rua=unidade_escolar.endereco.rua,
|
| 23 |
numero=unidade_escolar.endereco.numero,
|
|
@@ -31,6 +35,7 @@ class UnidadeEscolarService:
|
|
| 31 |
nome= unidade_escolar.nome,
|
| 32 |
cod_inep=unidade_escolar.cod_inep,
|
| 33 |
tipo=tipo_escola,
|
|
|
|
| 34 |
endereco=endereco
|
| 35 |
)
|
| 36 |
|
|
@@ -38,6 +43,7 @@ class UnidadeEscolarService:
|
|
| 38 |
unidade_escolar = UnidadeEscolar()
|
| 39 |
unidade_escolar.nome = unidade_escolar_request.nome
|
| 40 |
unidade_escolar.cod_inep = unidade_escolar_request.cod_inep
|
|
|
|
| 41 |
unidade_escolar.id_tipo = unidade_escolar_request.tipo_id
|
| 42 |
endereco_service = EnderecoService()
|
| 43 |
endereco = endereco_service.create_endereco(unidade_escolar_request.endereco)
|
|
|
|
| 1 |
from database import SessionLocal
|
| 2 |
from model import UnidadeEscolar,Endereco,Cidade
|
| 3 |
from exception import unidade_escolar_not_found
|
| 4 |
+
from schema import ResponseUnidadeEscolar, ResponseTipoEscola, ResponseEndereco, RequestUnidadeEscolar, ResponseCategoriaEscola
|
| 5 |
from sqlalchemy.orm import joinedload
|
| 6 |
from .endereco_service import EnderecoService
|
| 7 |
|
|
|
|
| 18 |
id=unidade_escolar.tipo.id,
|
| 19 |
descricao=unidade_escolar.tipo.description
|
| 20 |
)
|
| 21 |
+
categoria = ResponseCategoriaEscola(
|
| 22 |
+
id=unidade_escolar.categoria.id,
|
| 23 |
+
descricao=unidade_escolar.categoria.description
|
| 24 |
+
)
|
| 25 |
endereco = ResponseEndereco(
|
| 26 |
rua=unidade_escolar.endereco.rua,
|
| 27 |
numero=unidade_escolar.endereco.numero,
|
|
|
|
| 35 |
nome= unidade_escolar.nome,
|
| 36 |
cod_inep=unidade_escolar.cod_inep,
|
| 37 |
tipo=tipo_escola,
|
| 38 |
+
categoria=categoria,
|
| 39 |
endereco=endereco
|
| 40 |
)
|
| 41 |
|
|
|
|
| 43 |
unidade_escolar = UnidadeEscolar()
|
| 44 |
unidade_escolar.nome = unidade_escolar_request.nome
|
| 45 |
unidade_escolar.cod_inep = unidade_escolar_request.cod_inep
|
| 46 |
+
unidade_escolar.id_categoria = unidade_escolar_request.categoria_id
|
| 47 |
unidade_escolar.id_tipo = unidade_escolar_request.tipo_id
|
| 48 |
endereco_service = EnderecoService()
|
| 49 |
endereco = endereco_service.create_endereco(unidade_escolar_request.endereco)
|