feat (patient): remove previously uploaded file when a new one is created

This commit is contained in:
dpurbosakti
2025-09-25 11:14:47 +07:00
parent f618a2d6d0
commit a9e380f957
3 changed files with 44 additions and 0 deletions
@@ -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
}
+9
View File
@@ -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
}