Skip to content

Commit

Permalink
feat: add support for manual data collection
Browse files Browse the repository at this point in the history
  • Loading branch information
JezzDiego committed Oct 24, 2024
1 parent 7c9861c commit a7200a4
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 88 deletions.
3 changes: 3 additions & 0 deletions docs/docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -1173,6 +1173,9 @@ const docTemplate = `{
"ano": {
"type": "integer"
},
"coleta_manual": {
"type": "boolean"
},
"dados_coleta": {
"$ref": "#/definitions/papi.collect"
},
Expand Down
170 changes: 91 additions & 79 deletions papi/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,14 @@ func (h handler) V1GetAgencyById(c echo.Context) error {
return c.JSON(http.StatusOK, agency)
}

// @ID GetAgencyById
// @Tags public_api
// @Description Busca um órgão específico utilizando seu ID.
// @Produce json
// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb."
// @Success 200 {object} agency "Requisição bem sucedida."
// @Failure 404 {string} string "Órgão não encontrado."
// @Router /v2/orgao/{orgao} [get]
// @ID GetAgencyById
// @Tags public_api
// @Description Busca um órgão específico utilizando seu ID.
// @Produce json
// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb."
// @Success 200 {object} agency "Requisição bem sucedida."
// @Failure 404 {string} string "Órgão não encontrado."
// @Router /v2/orgao/{orgao} [get]
func (h handler) V2GetAgencyById(c echo.Context) error {
agencyName := c.Param("orgao")
strAgency, err := h.client.Db.GetAgency(agencyName)
Expand Down Expand Up @@ -92,13 +92,13 @@ func (h handler) V1GetAllAgencies(c echo.Context) error {
return c.JSON(http.StatusOK, agencies)
}

// @ID GetAllAgencies
// @Tags public_api
// @Description Busca todos os órgãos disponíveis.
// @Produce json
// @Success 200 {object} []agency "Requisição bem sucedida."
// @Failure 500 {string} string "Erro interno do servidor."
// @Router /v2/orgaos [get]
// @ID GetAllAgencies
// @Tags public_api
// @Description Busca todos os órgãos disponíveis.
// @Produce json
// @Success 200 {object} []agency "Requisição bem sucedida."
// @Failure 500 {string} string "Erro interno do servidor."
// @Router /v2/orgaos [get]
func (h handler) V2GetAllAgencies(c echo.Context) error {
strAgencies, err := h.client.Db.GetAllAgencies()
if err != nil {
Expand Down Expand Up @@ -237,7 +237,9 @@ func (h handler) GetMonthlyInfo(c echo.Context) error {
CrawlerVersion: mi.CrawlerVersion,
ParserRepo: mi.ParserRepo,
ParserVersion: mi.ParserVersion,
}})
},
ManualCollection: mi.ManualCollection,

Check failure on line 241 in papi/handlers.go

View workflow job for this annotation

GitHub Actions / testing

mi.ManualCollection undefined (type models.AgencyMonthlyInfo has no field or method ManualCollection)
})
// The status 4 is a report from crawlers that data is unavailable or malformed. By removing them from the API results, we make sure they are displayed as if there is no data.
} else if mi.ProcInfo.Status != 4 {
sumMI = append(
Expand All @@ -249,28 +251,30 @@ func (h handler) GetMonthlyInfo(c echo.Context) error {
Status: mi.ProcInfo.Status,
Cmd: mi.ProcInfo.Cmd,
},
Month: mi.Month,
Year: mi.Year,
Package: nil,
Summary: nil,
Metadata: nil})
Month: mi.Month,
Year: mi.Year,
Package: nil,
Summary: nil,
Metadata: nil,
ManualCollection: mi.ManualCollection,

Check failure on line 259 in papi/handlers.go

View workflow job for this annotation

GitHub Actions / testing

mi.ManualCollection undefined (type models.AgencyMonthlyInfo has no field or method ManualCollection)
})
}
}
}
return c.JSON(http.StatusOK, sumMI)
}

// @ID GetMonthlyInfo
// @Tags public_api
// @Description Busca um dado mensal de um órgão
// @Produce json
// @Success 200 {object} summaryzedMI "Requisição bem sucedida"
// @Failure 400 {string} string "Parâmetros inválidos"
// @Failure 404 {string} string "Não existem dados para os parâmetros informados"
// @Param ano path int true "Ano"
// @Param orgao path string true "Órgão"
// @Param mes path int true "Mês"
// @Router /v2/dados/{orgao}/{ano}/{mes} [get]
// @ID GetMonthlyInfo
// @Tags public_api
// @Description Busca um dado mensal de um órgão
// @Produce json
// @Success 200 {object} summaryzedMI "Requisição bem sucedida"
// @Failure 400 {string} string "Parâmetros inválidos"
// @Failure 404 {string} string "Não existem dados para os parâmetros informados"
// @Param ano path int true "Ano"
// @Param orgao path string true "Órgão"
// @Param mes path int true "Mês"
// @Router /v2/dados/{orgao}/{ano}/{mes} [get]
func (h handler) V2GetMonthlyInfo(c echo.Context) error {
year, err := strconv.Atoi(c.Param("ano"))
if err != nil {
Expand Down Expand Up @@ -369,6 +373,7 @@ func (h handler) V2GetMonthlyInfo(c echo.Context) error {
ParserRepo: monthlyInfo.ParserRepo,
ParserVersion: monthlyInfo.ParserVersion,
},
ManualCollection: monthlyInfo.ManualCollection,

Check failure on line 376 in papi/handlers.go

View workflow job for this annotation

GitHub Actions / testing

monthlyInfo.ManualCollection undefined (type *models.AgencyMonthlyInfo has no field or method ManualCollection)
}
//O status 4 informa que os dados estão indisponíveis. Ao removê-los dos resultados da API, garantimos que eles sejam exibidos como se não houvesse dados.
} else if monthlyInfo.ProcInfo.Status != 4 {
Expand All @@ -379,28 +384,29 @@ func (h handler) V2GetMonthlyInfo(c echo.Context) error {
Status: monthlyInfo.ProcInfo.Status,
Cmd: monthlyInfo.ProcInfo.Cmd,
},
Month: monthlyInfo.Month,
Year: monthlyInfo.Year,
Package: nil,
Summary: nil,
Metadata: nil,
Month: monthlyInfo.Month,
Year: monthlyInfo.Year,
Package: nil,
Summary: nil,
Metadata: nil,
ManualCollection: monthlyInfo.ManualCollection,

Check failure on line 392 in papi/handlers.go

View workflow job for this annotation

GitHub Actions / testing

monthlyInfo.ManualCollection undefined (type *models.AgencyMonthlyInfo has no field or method ManualCollection)
}
} else {
return c.NoContent(http.StatusNoContent)
}
return c.JSON(http.StatusOK, sumMI)
}

// @ID GetMonthlyInfosByYear
// @Tags public_api
// @Description Busca os dados mensais de um órgão por ano
// @Produce json
// @Success 200 {object} []summaryzedMI "Requisição bem sucedida"
// @Failure 400 {string} string "Parâmetros inválidos"
// @Failure 404 {string} string "Não existem dados para os parâmetros informados"
// @Param ano path int true "Ano"
// @Param orgao path string true "Órgão"
// @Router /v2/dados/{orgao}/{ano} [get]
// @ID GetMonthlyInfosByYear
// @Tags public_api
// @Description Busca os dados mensais de um órgão por ano
// @Produce json
// @Success 200 {object} []summaryzedMI "Requisição bem sucedida"
// @Failure 400 {string} string "Parâmetros inválidos"
// @Failure 404 {string} string "Não existem dados para os parâmetros informados"
// @Param ano path int true "Ano"
// @Param orgao path string true "Órgão"
// @Router /v2/dados/{orgao}/{ano} [get]
func (h handler) GetMonthlyInfosByYear(c echo.Context) error {
year, err := strconv.Atoi(c.Param("ano"))
if err != nil {
Expand Down Expand Up @@ -498,7 +504,9 @@ func (h handler) GetMonthlyInfosByYear(c echo.Context) error {
CrawlerVersion: mi.CrawlerVersion,
ParserRepo: mi.ParserRepo,
ParserVersion: mi.ParserVersion,
}})
},
ManualCollection: mi.ManualCollection,

Check failure on line 508 in papi/handlers.go

View workflow job for this annotation

GitHub Actions / testing

mi.ManualCollection undefined (type models.AgencyMonthlyInfo has no field or method ManualCollection)
})
//O status 4 informa que os dados estão indisponíveis. Ao removê-los dos resultados da API, garantimos que eles sejam exibidos como se não houvesse dados.
} else if mi.ProcInfo.Status != 4 {
sumMI = append(
Expand All @@ -510,27 +518,29 @@ func (h handler) GetMonthlyInfosByYear(c echo.Context) error {
Status: mi.ProcInfo.Status,
Cmd: mi.ProcInfo.Cmd,
},
Month: mi.Month,
Year: mi.Year,
Package: nil,
Summary: nil,
Metadata: nil})
Month: mi.Month,
Year: mi.Year,
Package: nil,
Summary: nil,
Metadata: nil,
ManualCollection: mi.ManualCollection,

Check failure on line 526 in papi/handlers.go

View workflow job for this annotation

GitHub Actions / testing

mi.ManualCollection undefined (type models.AgencyMonthlyInfo has no field or method ManualCollection)
})
}
}
}
return c.JSON(http.StatusOK, sumMI)
}

// @ID GetAggregateIndexesWithParams
// @Tags public_api
// @Description Busca as informações de índices de um grupo ou órgão específico.
// @Produce json
// @Success 200 {object} []aggregateIndexes "Requisição bem sucedida."
// @Failure 400 {string} string "Requisição inválida."
// @Failure 500 {string} string "Erro interno do servidor."
// @Param param path string true "'grupo' ou 'orgao'"
// @Param valor path string true "Jurisdição ou ID do órgao"
// @Router /v2/indice/{param}/{valor} [get]
// @ID GetAggregateIndexesWithParams
// @Tags public_api
// @Description Busca as informações de índices de um grupo ou órgão específico.
// @Produce json
// @Success 200 {object} []aggregateIndexes "Requisição bem sucedida."
// @Failure 400 {string} string "Requisição inválida."
// @Failure 500 {string} string "Erro interno do servidor."
// @Param param path string true "'grupo' ou 'orgao'"
// @Param valor path string true "Jurisdição ou ID do órgao"
// @Router /v2/indice/{param}/{valor} [get]
func (h handler) V2GetAggregateIndexesWithParams(c echo.Context) error {
param := c.Param("param")
valor := c.Param("valor")
Expand Down Expand Up @@ -678,13 +688,13 @@ func (h handler) V2GetAggregateIndexesWithParams(c echo.Context) error {
return c.JSON(http.StatusOK, aggregate)
}

// @ID GetAggregateIndexes
// @Tags public_api
// @Description Busca as informações de índices de todos os órgãos.
// @Produce json
// @Success 200 {object} []aggregateIndexesByGroup "Requisição bem sucedida."
// @Failure 500 {string} string "Erro interno do servidor."
// @Router /v2/indice [get]
// @ID GetAggregateIndexes
// @Tags public_api
// @Description Busca as informações de índices de todos os órgãos.
// @Produce json
// @Success 200 {object} []aggregateIndexesByGroup "Requisição bem sucedida."
// @Failure 500 {string} string "Erro interno do servidor."
// @Router /v2/indice [get]
func (h handler) V2GetAggregateIndexes(c echo.Context) error {
agregado := c.QueryParam("agregado")
detalhe := c.QueryParam("detalhe")
Expand Down Expand Up @@ -788,14 +798,14 @@ func (h handler) V2GetAggregateIndexes(c echo.Context) error {
return c.JSON(http.StatusOK, dados)
}

// @ID GetAllAgencyInformation
// @Tags public_api
// @Description Busca todas as informações de um órgão específico.
// @Produce json
// @Success 200 {object} allAgencyInformation "Requisição bem sucedida."
// @Failure 400 {string} string "Requisição inválida."
// @Param orgao path string true "órgão"
// @Router /v2/dados/{orgao} [get]
// @ID GetAllAgencyInformation
// @Tags public_api
// @Description Busca todas as informações de um órgão específico.
// @Produce json
// @Success 200 {object} allAgencyInformation "Requisição bem sucedida."
// @Failure 400 {string} string "Requisição inválida."
// @Param orgao path string true "órgão"
// @Router /v2/dados/{orgao} [get]
func (h handler) V2GetAllAgencyInformation(c echo.Context) error {
agency := strings.ToLower(c.Param("orgao"))

Expand Down Expand Up @@ -876,7 +886,9 @@ func (h handler) V2GetAllAgencyInformation(c echo.Context) error {
Score: c.Score.Score,
CompletenessScore: c.Score.CompletenessScore,
EasinessScore: c.Score.EasinessScore,
}})
},
ManualCollection: c.ManualCollection,

Check failure on line 890 in papi/handlers.go

View workflow job for this annotation

GitHub Actions / testing

c.ManualCollection undefined (type models.AgencyMonthlyInfo has no field or method ManualCollection)
})
numMonthsWithData++
}
aggregateScore += c.Score.Score
Expand Down
19 changes: 10 additions & 9 deletions papi/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,15 +72,16 @@ type miError struct {
}

type summaryzedMI struct {
AgencyID string `json:"id_orgao,omitempty"`
Month int `json:"mes,omitempty"`
Year int `json:"ano,omitempty"`
Summary *summaries `json:"sumarios,omitempty"`
Package *backup `json:"pacote_de_dados,omitempty"`
Metadata *metadata `json:"metadados,omitempty"`
Score *score `json:"indice_transparencia,omitempty"`
Collect *collect `json:"dados_coleta,omitempty"`
Error *miError `json:"error,omitempty"`
AgencyID string `json:"id_orgao,omitempty"`
Month int `json:"mes,omitempty"`
Year int `json:"ano,omitempty"`
Summary *summaries `json:"sumarios,omitempty"`
Package *backup `json:"pacote_de_dados,omitempty"`
Metadata *metadata `json:"metadados,omitempty"`
Score *score `json:"indice_transparencia,omitempty"`
Collect *collect `json:"dados_coleta,omitempty"`
ManualCollection bool `json:"coleta_manual"`
Error *miError `json:"error,omitempty"`
}

type agency struct {
Expand Down

0 comments on commit a7200a4

Please sign in to comment.