summaryrefslogtreecommitdiffstats
path: root/src/models.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/models.cpp')
-rw-r--r--src/models.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/models.cpp b/src/models.cpp
index 84e03f9..088283b 100644
--- a/src/models.cpp
+++ b/src/models.cpp
@@ -124,6 +124,25 @@ Address Address::from_json(const Json& data) {
return address;
}
+std::optional<Faixa> Faixa::from_json(const Json& data) {
+ if (!data.is_object()) {
+ return std::nullopt;
+ }
+ Faixa faixa;
+ faixa.localidade = as_field(data.find("localidade"));
+ faixa.uf = as_field(data.find("uf"));
+ if (faixa.localidade.empty() || faixa.uf.empty()) {
+ return std::nullopt;
+ }
+ faixa.estado = as_field(data.find("estado"));
+ faixa.regiao = as_field(data.find("regiao"));
+ faixa.ibge = as_field(data.find("ibge"));
+ faixa.cep_ini = as_field(data.find("cep_ini"));
+ faixa.cep_fim = as_field(data.find("cep_fim"));
+ faixa.ceps = as_integer(data.find("ceps")).value_or(0);
+ return faixa;
+}
+
Health Health::from_json(const Json& data) {
Health health;
health.status = as_field(data.find("status"));