feat (patient): remove previously uploaded file when a new one is created
This commit is contained in:
@@ -397,19 +397,39 @@ func Upload(input e.UploadDto) (*d.Data, error) {
|
||||
if err != nil {
|
||||
event.Action = ""
|
||||
}
|
||||
|
||||
fileUrl := ""
|
||||
switch input.Code {
|
||||
case ere.UCPRN:
|
||||
if person.ResidentIdentityFileUrl != nil {
|
||||
fileUrl = *person.ResidentIdentityFileUrl
|
||||
}
|
||||
person.ResidentIdentityFileUrl = &pubUrl
|
||||
case ere.UCPDL:
|
||||
if person.DrivingLicenseFileUrl != nil {
|
||||
fileUrl = *person.DrivingLicenseFileUrl
|
||||
}
|
||||
person.DrivingLicenseFileUrl = &pubUrl
|
||||
case ere.UCPP:
|
||||
if person.PassportFileUrl != nil {
|
||||
fileUrl = *person.PassportFileUrl
|
||||
}
|
||||
person.PassportFileUrl = &pubUrl
|
||||
case ere.UCPFC:
|
||||
if person.FamilyIdentityFileUrl != nil {
|
||||
fileUrl = *person.FamilyIdentityFileUrl
|
||||
}
|
||||
person.FamilyIdentityFileUrl = &pubUrl
|
||||
default:
|
||||
return errors.New("invalid upload code")
|
||||
}
|
||||
|
||||
if fileUrl != "" {
|
||||
if err := removeUploadedFile(string(input.Code), fileUrl, &event); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if err := tx.Save(&person).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -119,3 +119,18 @@ func uploadAndGenerateFileUrl(input e.UploadDto, event *pl.Event) (string, error
|
||||
pl.SetLogInfo(event, nil, "complete")
|
||||
return publicUrl, nil
|
||||
}
|
||||
|
||||
func removeUploadedFile(bucket, fileUrl string, event *pl.Event) error {
|
||||
pl.SetLogInfo(event, nil, "started", "removeUploadedFile")
|
||||
filename, err := pmh.GetFilename(fileUrl)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = pmh.I.RemoveObject(bucket, filename)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
pl.SetLogInfo(event, nil, "complete")
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"path"
|
||||
|
||||
m "simrs-vx/internal/infra/minio"
|
||||
|
||||
@@ -165,3 +166,11 @@ func GetEndpointUrl(bucket string) string {
|
||||
}
|
||||
return fmt.Sprintf("%s://%s/%s", mode, m.O.GetEndpoint(), bucket)
|
||||
}
|
||||
|
||||
func GetFilename(rawUrl string) (string, error) {
|
||||
parsed, err := url.Parse(rawUrl)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return path.Base(parsed.Path), nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user