diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2020-08-18 12:23:45 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-18 12:23:45 +0800 |
commit | 62e6c9bc6c7a94a02a263b40e78a4563788e7bc3 (patch) | |
tree | c0d35e4fb79d1a8e9604a63cafb239a775bd1ddd /models/migrations/v96.go | |
parent | 02fbe1e5dce2c36ec0d39328347ef28ed2470ddb (diff) | |
download | gitea-62e6c9bc6c7a94a02a263b40e78a4563788e7bc3.tar.gz gitea-62e6c9bc6c7a94a02a263b40e78a4563788e7bc3.zip |
Add a storage layer for attachments (#11387)
* Add a storage layer for attachments
* Fix some bug
* fix test
* Fix copyright head and lint
* Fix bug
* Add setting for minio and flags for migrate-storage
* Add documents
* fix lint
* Add test for minio store type on attachments
* fix test
* fix test
* Apply suggestions from code review
Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com>
* Add warning when storage migrated successfully
* Fix drone
* fix test
* rebase
* Fix test
* display the error on console
* Move minio test to amd64 since minio docker don't support arm64
* refactor the codes
* add trace
* Fix test
* remove log on xorm
* Fi download bug
* Add a storage layer for attachments
* Add setting for minio and flags for migrate-storage
* fix lint
* Add test for minio store type on attachments
* Apply suggestions from code review
Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com>
* Fix drone
* fix test
* Fix test
* display the error on console
* Move minio test to amd64 since minio docker don't support arm64
* refactor the codes
* add trace
* Fix test
* Add URL function to serve attachments directly from S3/Minio
* Add ability to enable/disable redirection in attachment configuration
* Fix typo
* Add a storage layer for attachments
* Add setting for minio and flags for migrate-storage
* fix lint
* Add test for minio store type on attachments
* Apply suggestions from code review
Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com>
* Fix drone
* fix test
* Fix test
* display the error on console
* Move minio test to amd64 since minio docker don't support arm64
* don't change unrelated files
* Fix lint
* Fix build
* update go.mod and go.sum
* Use github.com/minio/minio-go/v6
* Remove unused function
* Upgrade minio to v7 and some other improvements
* fix lint
* Fix go mod
Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com>
Co-authored-by: Tyler <tystuyfzand@gmail.com>
Diffstat (limited to 'models/migrations/v96.go')
-rw-r--r-- | models/migrations/v96.go | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/models/migrations/v96.go b/models/migrations/v96.go index 5decb832cd..f471ac384d 100644 --- a/models/migrations/v96.go +++ b/models/migrations/v96.go @@ -5,7 +5,7 @@ package migrations import ( - "path" + "path/filepath" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" @@ -14,7 +14,6 @@ import ( ) func deleteOrphanedAttachments(x *xorm.Engine) error { - type Attachment struct { ID int64 `xorm:"pk autoincr"` UUID string `xorm:"uuid UNIQUE"` @@ -23,12 +22,6 @@ func deleteOrphanedAttachments(x *xorm.Engine) error { CommentID int64 } - // AttachmentLocalPath returns where attachment is stored in local file - // system based on given UUID. - AttachmentLocalPath := func(uuid string) string { - return path.Join(setting.AttachmentPath, uuid[0:1], uuid[1:2], uuid) - } - sess := x.NewSession() defer sess.Close() @@ -53,12 +46,15 @@ func deleteOrphanedAttachments(x *xorm.Engine) error { for _, attachment := range attachements { ids = append(ids, attachment.ID) } - if _, err := sess.In("id", ids).Delete(new(Attachment)); err != nil { - return err + if len(ids) > 0 { + if _, err := sess.In("id", ids).Delete(new(Attachment)); err != nil { + return err + } } for _, attachment := range attachements { - if err := util.RemoveAll(AttachmentLocalPath(attachment.UUID)); err != nil { + uuid := attachment.UUID + if err := util.RemoveAll(filepath.Join(setting.Attachment.Path, uuid[0:1], uuid[1:2], uuid)); err != nil { return err } } |