/
putDocumentRepository.go
40 lines (32 loc) · 1.02 KB
/
putDocumentRepository.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package documents
import (
"context"
"github.com/luminosita/common-bee/pkg/log"
"github.com/luminosita/docrepo-bee/internal/data/db/mongodb"
"github.com/luminosita/docrepo-bee/internal/interface/data/documents"
"go.mongodb.org/mongo-driver/bson/primitive"
)
type PutDocumentRepository struct {
ctx context.Context
data *mongodb.Data
logger log.LogHelper
}
func NewPutDocumentRepository(ctx context.Context, data *mongodb.Data) *PutDocumentRepository {
return &PutDocumentRepository{
ctx: ctx,
data: data,
}
}
func (r *PutDocumentRepository) PutDocument(
docData *documents.PutDocumentRepositorerRequest) (res *documents.PutDocumentRepositorerResponse, err error) {
bucket := r.data.DbBucket(Documents)
docId := primitive.NewObjectID()
uploadStream, err := bucket.OpenUploadStreamWithID(docId, docData.Name)
if err != nil {
return nil, log.LogErrorf("cannot open bucket upload stream: %s", err)
}
return &documents.PutDocumentRepositorerResponse{
DocumentId: docId.Hex(),
Writer: uploadStream,
}, nil
}