Skip to content

Commit fe5f03f

Browse files
authored
Merge pull request #10 from SwimResults/develop
certificate import from import service
2 parents 9fadfa7 + 99dcc8d commit fe5f03f

File tree

4 files changed

+70
-22
lines changed

4 files changed

+70
-22
lines changed

client/athlete_client.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/swimresults/athlete-service/dto"
77
"github.com/swimresults/athlete-service/model"
88
"github.com/swimresults/service-core/client"
9+
"go.mongodb.org/mongo-driver/bson/primitive"
910
"net/http"
1011
"strconv"
1112
)
@@ -96,3 +97,29 @@ func (c *AthleteClient) ImportAthlete(athlete model.Athlete, meeting string) (*m
9697
}
9798
return newAthlete, res.StatusCode == http.StatusCreated, nil
9899
}
100+
101+
func (c *AthleteClient) ImportCertificate(name string, athleteId primitive.ObjectID, meeting string, path string) (*model.Certificate, bool, error) {
102+
request := dto.ImportCertificateRequestDto{
103+
Name: name,
104+
AthleteId: athleteId,
105+
Meeting: meeting,
106+
Path: path,
107+
}
108+
109+
res, err := client.Post(c.apiUrl, "certificate/import", request, nil)
110+
if err != nil {
111+
return nil, false, err
112+
}
113+
defer res.Body.Close()
114+
115+
newCertificate := &model.Certificate{}
116+
err = json.NewDecoder(res.Body).Decode(newCertificate)
117+
if err != nil {
118+
return nil, false, err
119+
}
120+
121+
if res.StatusCode != http.StatusCreated && res.StatusCode != http.StatusOK {
122+
return nil, false, fmt.Errorf("import request returned: %d", res.StatusCode)
123+
}
124+
return newCertificate, res.StatusCode == http.StatusCreated, nil
125+
}

controller/certificate_controller.go

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package controller
22

33
import (
44
"github.com/gin-gonic/gin"
5+
"github.com/swimresults/athlete-service/dto"
56
"github.com/swimresults/athlete-service/model"
67
"github.com/swimresults/athlete-service/service"
78
"go.mongodb.org/mongo-driver/bson/primitive"
@@ -163,24 +164,18 @@ func updateCertificate(c *gin.Context) {
163164
}
164165

165166
func importCertificate(c *gin.Context) {
166-
//var certificate *model.Certificate
167-
//var request dto.ImportCertificateRequestDto
168-
//if err := c.BindJSON(&request); err != nil {
169-
// c.IndentedJSON(http.StatusInternalServerError, gin.H{"message": err.Error()})
170-
// return
171-
//}
172-
//
173-
//certificate, r, err := service.ImportCertificate(request.Certificate, request.Meeting)
174-
//if err != nil {
175-
// c.IndentedJSON(http.StatusInternalServerError, gin.H{"message": err.Error()})
176-
// return
177-
//}
178-
//
179-
//if r {
180-
// c.IndentedJSON(http.StatusCreated, *certificate)
181-
//} else {
182-
// c.IndentedJSON(http.StatusOK, *certificate)
183-
//}
184-
185-
c.IndentedJSON(http.StatusNotImplemented, "")
167+
var request dto.ImportCertificateRequestDto
168+
if err := c.BindJSON(&request); err != nil {
169+
c.IndentedJSON(http.StatusInternalServerError, gin.H{"message": err.Error()})
170+
return
171+
}
172+
173+
cert, err := service.ImportCertificate(request)
174+
if err != nil {
175+
c.IndentedJSON(http.StatusInternalServerError, gin.H{"message": err.Error()})
176+
return
177+
}
178+
179+
c.IndentedJSON(http.StatusCreated, cert)
180+
186181
}

dto/import_certificate_request.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package dto
2+
3+
import (
4+
"go.mongodb.org/mongo-driver/bson/primitive"
5+
)
6+
7+
type ImportCertificateRequestDto struct {
8+
Name string `json:"name"`
9+
Meeting string `json:"meeting"`
10+
AthleteId primitive.ObjectID `json:"athlete_id"`
11+
Path string `json:"path"`
12+
}

service/certificate_service.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ import (
44
"context"
55
"errors"
66
log "github.com/sirupsen/logrus"
7+
"github.com/swimresults/athlete-service/dto"
78
"github.com/swimresults/athlete-service/model"
89
"go.mongodb.org/mongo-driver/bson"
910
"go.mongodb.org/mongo-driver/bson/primitive"
1011
"go.mongodb.org/mongo-driver/mongo"
1112
"go.mongodb.org/mongo-driver/mongo/options"
13+
"strings"
1214
"time"
1315
)
1416

@@ -134,10 +136,22 @@ func AddCertificate(certificate model.Certificate) (model.Certificate, error) {
134136
return GetCertificateById(r.InsertedID.(primitive.ObjectID))
135137
}
136138

137-
func ImportCertificate(certificate model.Certificate) (*model.Certificate, bool, error) {
139+
func ImportCertificate(request dto.ImportCertificateRequestDto) (model.Certificate, error) {
140+
if request.Path != "" && !strings.HasPrefix(request.Path, "/") {
141+
request.Path = "/" + request.Path
142+
}
138143

139-
return nil, false, nil
144+
certificate := model.Certificate{
145+
Name: request.Name,
146+
AthleteId: request.AthleteId,
147+
Meeting: request.Meeting,
148+
Path: request.Path,
149+
Hidden: false,
150+
Downloads: 0,
151+
Ordering: 0,
152+
}
140153

154+
return AddCertificate(certificate)
141155
}
142156

143157
func UpdateCertificate(certificate model.Certificate) (model.Certificate, error) {

0 commit comments

Comments
 (0)