diff --git a/changelog/unreleased/add-version-to-urevent.md b/changelog/unreleased/add-version-to-urevent.md new file mode 100644 index 0000000000..a5dda17b53 --- /dev/null +++ b/changelog/unreleased/add-version-to-urevent.md @@ -0,0 +1,5 @@ +Add IsVersion to UploadReadyEvent + +Adds an IsVersion flag indicating that this upload is a version of an existing file + +https://github.com/cs3org/reva/pull/4847 diff --git a/pkg/events/postprocessing.go b/pkg/events/postprocessing.go index 69e3f14ac7..c28b8cc5a5 100644 --- a/pkg/events/postprocessing.go +++ b/pkg/events/postprocessing.go @@ -180,8 +180,9 @@ type UploadReady struct { SpaceOwner *user.UserId ExecutingUser *user.User FileRef *provider.Reference - Failed bool Timestamp *types.Timestamp + Failed bool + IsVersion bool // add reference here? We could use it to inform client pp is finished } diff --git a/pkg/storage/utils/decomposedfs/decomposedfs.go b/pkg/storage/utils/decomposedfs/decomposedfs.go index 2bb6b1076c..8a39f45fba 100644 --- a/pkg/storage/utils/decomposedfs/decomposedfs.go +++ b/pkg/storage/utils/decomposedfs/decomposedfs.go @@ -347,6 +347,14 @@ func (fs *Decomposedfs) Postprocessing(ch <-chan events.Event) { fs.sessionStore.Cleanup(ctx, session, revertNodeMetadata, keepUpload, unmarkPostprocessing) + var isVersion bool + if session.NodeExists() { + info, err := session.GetInfo(ctx) + if err == nil && info.MetaData["versionsPath"] != "" { + isVersion = true + } + } + if err := events.Publish( ctx, fs.stream, @@ -365,6 +373,7 @@ func (fs *Decomposedfs) Postprocessing(ch <-chan events.Event) { }, Timestamp: utils.TimeToTS(now), SpaceOwner: n.SpaceOwnerOrManager(ctx), + IsVersion: isVersion, }, ); err != nil { sublog.Error().Err(err).Msg("Failed to publish UploadReady event")