mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-05-08 04:20:59 -05:00
feat(activitylog): repair space share events
Signed-off-by: jkoberg <jkoberg@owncloud.com>
This commit is contained in:
@@ -101,28 +101,20 @@ func (a *ActivitylogService) Run() {
|
|||||||
err = a.AddActivity(ev.Ref, e.ID, utils.TSToTime(ev.Timestamp))
|
err = a.AddActivity(ev.Ref, e.ID, utils.TSToTime(ev.Timestamp))
|
||||||
case events.ItemTrashed:
|
case events.ItemTrashed:
|
||||||
err = a.AddActivityTrashed(ev.ID, ev.Ref, e.ID, utils.TSToTime(ev.Timestamp))
|
err = a.AddActivityTrashed(ev.ID, ev.Ref, e.ID, utils.TSToTime(ev.Timestamp))
|
||||||
case events.ItemPurged:
|
|
||||||
err = a.AddActivity(ev.Ref, e.ID, utils.TSToTime(ev.Timestamp))
|
|
||||||
case events.ItemMoved:
|
case events.ItemMoved:
|
||||||
err = a.AddActivity(ev.Ref, e.ID, utils.TSToTime(ev.Timestamp))
|
err = a.AddActivity(ev.Ref, e.ID, utils.TSToTime(ev.Timestamp))
|
||||||
case events.ShareCreated:
|
case events.ShareCreated:
|
||||||
err = a.AddActivity(toRef(ev.ItemID), e.ID, utils.TSToTime(ev.CTime))
|
err = a.AddActivity(toRef(ev.ItemID), e.ID, utils.TSToTime(ev.CTime))
|
||||||
case events.ShareUpdated:
|
|
||||||
err = a.AddActivity(toRef(ev.ItemID), e.ID, utils.TSToTime(ev.MTime))
|
|
||||||
case events.ShareRemoved:
|
case events.ShareRemoved:
|
||||||
err = a.AddActivity(toRef(ev.ItemID), e.ID, ev.Timestamp)
|
err = a.AddActivity(toRef(ev.ItemID), e.ID, ev.Timestamp)
|
||||||
case events.LinkCreated:
|
case events.LinkCreated:
|
||||||
err = a.AddActivity(toRef(ev.ItemID), e.ID, utils.TSToTime(ev.CTime))
|
err = a.AddActivity(toRef(ev.ItemID), e.ID, utils.TSToTime(ev.CTime))
|
||||||
case events.LinkUpdated:
|
|
||||||
err = a.AddActivity(toRef(ev.ItemID), e.ID, utils.TSToTime(ev.CTime))
|
|
||||||
case events.LinkRemoved:
|
case events.LinkRemoved:
|
||||||
err = a.AddActivity(toRef(ev.ItemID), e.ID, utils.TSToTime(ev.Timestamp))
|
err = a.AddActivity(toRef(ev.ItemID), e.ID, utils.TSToTime(ev.Timestamp))
|
||||||
case events.SpaceShared:
|
case events.SpaceShared:
|
||||||
err = a.AddActivity(sToRef(ev.ID), e.ID, ev.Timestamp)
|
err = a.AddSpaceActivity(ev.ID, e.ID, ev.Timestamp)
|
||||||
case events.SpaceShareUpdated:
|
|
||||||
err = a.AddActivity(sToRef(ev.ID), e.ID, ev.Timestamp)
|
|
||||||
case events.SpaceUnshared:
|
case events.SpaceUnshared:
|
||||||
err = a.AddActivity(sToRef(ev.ID), e.ID, ev.Timestamp)
|
err = a.AddSpaceActivity(ev.ID, e.ID, ev.Timestamp)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -161,7 +153,7 @@ func (a *ActivitylogService) AddActivityTrashed(resourceID *provider.ResourceId,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// store activity on trashed item
|
// store activity on trashed item
|
||||||
if err := a.storeActivity(resourceID, eventID, 0, timestamp); err != nil {
|
if err := a.storeActivity(storagespace.FormatResourceID(*resourceID), eventID, 0, timestamp); err != nil {
|
||||||
return fmt.Errorf("could not store activity: %w", err)
|
return fmt.Errorf("could not store activity: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,6 +168,20 @@ func (a *ActivitylogService) AddActivityTrashed(resourceID *provider.ResourceId,
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddSpaceActivity adds the activity to the given spaceroot
|
||||||
|
func (a *ActivitylogService) AddSpaceActivity(spaceID *provider.StorageSpaceId, eventID string, timestamp time.Time) error {
|
||||||
|
// spaceID is in format <providerid>$<spaceid>
|
||||||
|
// activitylog service uses format <providerid>$<spaceid>!<resourceid>
|
||||||
|
// lets do some converting, shall we?
|
||||||
|
rid, err := storagespace.ParseID(spaceID.GetOpaqueId())
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("could not parse space id: %w", err)
|
||||||
|
}
|
||||||
|
rid.OpaqueId = rid.GetSpaceId()
|
||||||
|
return a.storeActivity(storagespace.FormatResourceID(rid), eventID, 0, timestamp)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Activities returns the activities for the given resource
|
// Activities returns the activities for the given resource
|
||||||
func (a *ActivitylogService) Activities(rid *provider.ResourceId) ([]RawActivity, error) {
|
func (a *ActivitylogService) Activities(rid *provider.ResourceId) ([]RawActivity, error) {
|
||||||
resourceID := storagespace.FormatResourceID(*rid)
|
resourceID := storagespace.FormatResourceID(*rid)
|
||||||
@@ -236,7 +242,7 @@ func (a *ActivitylogService) addActivity(initRef *provider.Reference, eventID st
|
|||||||
return fmt.Errorf("could not get resource info: %w", err)
|
return fmt.Errorf("could not get resource info: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := a.storeActivity(info.GetId(), eventID, depth, timestamp); err != nil {
|
if err := a.storeActivity(storagespace.FormatResourceID(*info.GetId()), eventID, depth, timestamp); err != nil {
|
||||||
return fmt.Errorf("could not store activity: %w", err)
|
return fmt.Errorf("could not store activity: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,13 +255,7 @@ func (a *ActivitylogService) addActivity(initRef *provider.Reference, eventID st
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *ActivitylogService) storeActivity(rid *provider.ResourceId, eventID string, depth int, timestamp time.Time) error {
|
func (a *ActivitylogService) storeActivity(resourceID string, eventID string, depth int, timestamp time.Time) error {
|
||||||
if rid == nil {
|
|
||||||
return errors.New("resource id is required")
|
|
||||||
}
|
|
||||||
|
|
||||||
resourceID := storagespace.FormatResourceID(*rid)
|
|
||||||
|
|
||||||
records, err := a.store.Read(resourceID)
|
records, err := a.store.Read(resourceID)
|
||||||
if err != nil && err != microstore.ErrNotFound {
|
if err != nil && err != microstore.ErrNotFound {
|
||||||
return err
|
return err
|
||||||
@@ -291,12 +291,3 @@ func toRef(r *provider.ResourceId) *provider.Reference {
|
|||||||
ResourceId: r,
|
ResourceId: r,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func sToRef(s *provider.StorageSpaceId) *provider.Reference {
|
|
||||||
return &provider.Reference{
|
|
||||||
ResourceId: &provider.ResourceId{
|
|
||||||
OpaqueId: s.GetOpaqueId(),
|
|
||||||
SpaceId: s.GetOpaqueId(),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user