@@ -12,7 +12,14 @@ import (
1212 "github.com/sirupsen/logrus"
1313)
1414
15- func (us * usecase ) UpdateImage (ctx context.Context , payload domain.UploadImage , id uint ) error {
15+ func (us * usecase ) UpdateImage (ctx context.Context , payload domain.UploadImage , fileName string ) (domain.UploadImageResponse , error ) {
16+ // Get existing image data by fileName
17+ existingImage , err := us .imageRepo .GetImage (ctx , fileName )
18+ if err != nil {
19+ logrus .Error ("failed to get existing image:" , err )
20+ return domain.UploadImageResponse {}, err
21+ }
22+
1623 var filePath string
1724 hName := hash .GenerateHash (time .Now ().Format ("2006-01-02 15:04:05" ) + "Hammercode" )
1825 uploadDir := "./uploads"
@@ -22,37 +29,44 @@ func (us *usecase) UpdateImage(ctx context.Context, payload domain.UploadImage,
2229
2330 // file path/category/type image
2431 uploadDir = fmt .Sprintf ("%s/%s/%s" , uploadDir , payload .Category , payload .Type )
25- fileName := fmt .Sprintf ("%s.%s" , hName [0 :15 ], payload .Format )
26- filePath = fmt .Sprintf ("%s/%s" , uploadDir , fileName )
32+ newFileName := fmt .Sprintf ("%s.%s" , hName [0 :15 ], payload .Format )
33+ filePath = fmt .Sprintf ("%s/%s" , uploadDir , newFileName )
2734
2835 // Ensure the directory exists, create it if it doesn't
2936 if err := os .MkdirAll (uploadDir , os .ModePerm ); err != nil {
3037 logrus .Error ("Failed to create directory:" , err )
31- return err
38+ return domain. UploadImageResponse {}, err
3239 }
3340
3441 // Save the file to the uploads directory
3542 dst , err := os .Create (filePath )
3643 if err != nil {
3744 logrus .Error ("failed to create file path" )
38- return err
45+ return domain. UploadImageResponse {}, err
3946 }
4047 defer dst .Close ()
4148
4249 _ , err = io .Copy (dst , payload .File )
4350 if err != nil {
4451 logrus .Error ("failed to read all file" )
45- return err
52+ return domain. UploadImageResponse {}, err
4653 }
4754
48- // Update data di database
55+ // Update data di database with existing ID
4956 img := domain.Image {
50- ID : id ,
51- FileName : fileName ,
57+ ID : existingImage . ID ,
58+ FileName : newFileName ,
5259 FilePath : filePath ,
5360 Format : payload .Format ,
5461 ContentType : payload .ContentType ,
5562 }
5663
57- return us .imageRepo .UpdateImage (ctx , img )
64+ err = us .imageRepo .UpdateImage (ctx , img )
65+ if err != nil {
66+ return domain.UploadImageResponse {}, err
67+ }
68+
69+ return domain.UploadImageResponse {
70+ FileName : newFileName ,
71+ }, nil
5872}
0 commit comments