Skip to content

Commit 858176f

Browse files
committed
Criado serviço que retorna as posiçoes dos veiculos de uma linha
1 parent ff37a35 commit 858176f

File tree

3 files changed

+31
-2
lines changed

3 files changed

+31
-2
lines changed

router/router.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,5 +76,15 @@ func veiculosRoutes(s store.Storer) chi.Router {
7676
}
7777
json.NewEncoder(w).Encode(veiculo)
7878
})
79+
r.Get("/linha/{codigo}", func(w http.ResponseWriter, r *http.Request) {
80+
codigo := chi.URLParam(r, "codigo")
81+
veiculos, err := s.VeiculosLinha(codigo)
82+
if err != nil {
83+
w.WriteHeader(http.StatusInternalServerError)
84+
json.NewEncoder(w).Encode(err)
85+
return
86+
}
87+
json.NewEncoder(w).Encode(veiculos)
88+
})
7989
return r
8090
}

store/mongo.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func (ms *MongoStore) Veiculos() (veiculos model.Veiculos, err error) {
7171
return
7272
}
7373

74-
// Linhas retorna uma lista de veiculo por codigo
74+
// Veiculo retorna uma lista de veiculo por codigo
7575
func (ms *MongoStore) Veiculo(codigo string) (veiculos model.Veiculos, err error) {
7676

7777
cur, err := ms.db.Collection("veiculos").Find(ms.ctx, bson.M{"cod": codigo})
@@ -89,3 +89,22 @@ func (ms *MongoStore) Veiculo(codigo string) (veiculos model.Veiculos, err error
8989
}
9090
return
9191
}
92+
93+
// VeiculosLinha retorna uma lista dos veiculos de uma linha
94+
func (ms *MongoStore) VeiculosLinha(codigo string) (veiculos model.Veiculos, err error) {
95+
96+
cur, err := ms.db.Collection("veiculos").Find(ms.ctx, bson.M{"codigolinha": codigo})
97+
if err != nil {
98+
return
99+
}
100+
for cur.Next(ms.ctx) {
101+
var veiculo model.Veiculo
102+
err = cur.Decode(&veiculo)
103+
if err != nil {
104+
veiculos = model.Veiculos{}
105+
return
106+
}
107+
veiculos = append(veiculos, veiculo)
108+
}
109+
return
110+
}

store/store.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ type Storer interface {
1010
Linha(codigo string) (model.Linha, error)
1111
Veiculos() (model.Veiculos, error)
1212
Veiculo(codigo string) (model.Veiculos, error)
13-
// VeiculosLinhas(codigoLinha string) (model.Veiculos, error)
13+
VeiculosLinha(codigoLinha string) (model.Veiculos, error)
1414
}

0 commit comments

Comments
 (0)