diff --git a/.gitignore b/.gitignore index 5751de6..fc30b05 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .idea -.vscode \ No newline at end of file +main +.vscode diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..3c92d05 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,21 @@ +run: + timeout: 5m + skip-files: + - \.pb\.go$ + - .pb.go + - \.pb\.validate\.go$ + - \.pb\.gw\.go$ + - .pb.gw.go + - \.gen\.go$ + skip-dirs: + - mocks + +linters: + disable-all: true + enable: + - errcheck + +linter-settings: + errcheck: + exclude-functions: + - (io.Closer).Close diff --git a/deployments/staging/docker-compose.yaml b/deployments/staging/docker-compose.yaml index 874cbdf..c8cb8e8 100644 --- a/deployments/staging/docker-compose.yaml +++ b/deployments/staging/docker-compose.yaml @@ -29,7 +29,7 @@ services: STAGING_URL: "https://sadmin.pena" S3_FOLDER: verification S3_FILE_URL: https://3c580be9-cf31f296-d055-49cf-b39e-30c7959dc17b.s3.timeweb.cloud - CUSTOMER_RPC_HOST: 10.8.0.6:9066 + CUSTOMER_RPC_HOST: 10.8.0.6:9060 TRASH_LOG_HOST: 10.8.0.15:7113 MODULE_LOGGER: staging-verification diff --git a/internal/repository/verification.go b/internal/repository/verification.go index 11197e0..4489272 100644 --- a/internal/repository/verification.go +++ b/internal/repository/verification.go @@ -5,8 +5,8 @@ import ( "errors" "fmt" "mime/multipart" - "strings" "time" + "strings" "github.com/minio/minio-go/v7" "go.mongodb.org/mongo-driver/bson" @@ -195,6 +195,40 @@ func (r *VerificationRepository) UpdateFile(ctx context.Context, userID, fileNam return nil, err } + fileURL := fmt.Sprintf("%s/%s/%s/%s", r.url, r.folder, userID, fileHeader.Filename) + + // remove old file + verification, err := r.GetByUserID(ctx, userID) + if r.err(err) { + return nil, err + } + + if verification == nil { + return nil, fmt.Errorf("no verification found") + } + + found := false + for iterator, file := range verification.Files { + if file.Name != fileName { + continue + } + + objectName := strings.ReplaceAll(file.Url, r.url, "") + if err = r.s3.RemoveObject(ctx, VerificationBucket, objectName, minio.RemoveObjectOptions{}); r.err(err) { + return nil, err + } + + verification.Files[iterator] = models.VerificationFile{Name: file.Name, Url: fileURL} + found = true + } + + if !found { + verification.Files = append(verification.Files, models.VerificationFile{Name: fileName, Url: fileURL}) + } + + // update in mongodb + + result, err := r.Update(ctx, &models.Verification{ID: verification.ID, Files: verification.Files}) if r.err(err) { return nil, err