1
0
Fork 0
mirror of https://github.com/anyproto/anytype-heart.git synced 2025-06-08 05:47:07 +09:00
anytype-heart/space/virtualspaceservice/service.go
2023-12-16 12:21:12 +01:00

59 lines
1.3 KiB
Go

package virtualspaceservice
import (
"context"
"github.com/anyproto/any-sync/app"
"github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore"
)
const CName = "common.space.virtualspaceservice"
type VirtualSpaceService interface {
app.ComponentRunnable
RegisterVirtualSpace(spaceID string) (err error)
}
type virtualSpaceService struct {
objectStore objectstore.ObjectStore
}
func (v *virtualSpaceService) Init(a *app.App) (err error) {
v.objectStore = app.MustComponent[objectstore.ObjectStore](a)
return nil
}
func (v *virtualSpaceService) Name() string {
return CName
}
func (v *virtualSpaceService) Run(ctx context.Context) (err error) {
return v.cleanupVirtualSpaces(err)
}
func (v *virtualSpaceService) Close(ctx context.Context) (err error) {
return v.cleanupVirtualSpaces(err)
}
func (v *virtualSpaceService) cleanupVirtualSpaces(err error) error {
spaces, err := v.objectStore.ListVirtualSpaces()
if err != nil {
return err
}
for _, id := range spaces {
err := v.objectStore.DeleteVirtualSpace(id)
if err != nil {
return err
}
}
return nil
}
func (v *virtualSpaceService) RegisterVirtualSpace(spaceID string) (err error) {
return v.objectStore.SaveVirtualSpace(spaceID)
}
func New() VirtualSpaceService {
return &virtualSpaceService{}
}