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/clientspace/techspace.go

80 lines
2.2 KiB
Go

package clientspace
import (
"context"
"fmt"
"github.com/anyproto/any-sync/accountservice"
"github.com/anyproto/any-sync/commonspace"
"go.uber.org/zap"
"github.com/anyproto/anytype-heart/core/block/object/objectcache"
"github.com/anyproto/anytype-heart/core/domain"
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
"github.com/anyproto/anytype-heart/space/clientspace/keyvalueservice"
"github.com/anyproto/anytype-heart/space/spacecore/keyvalueobserver"
"github.com/anyproto/anytype-heart/space/techspace"
)
type TechSpace struct {
*space
techspace.TechSpace
}
type TechSpaceDeps struct {
CommonSpace commonspace.Space
ObjectFactory objectcache.ObjectFactory
AccountService accountservice.Service
PersonalSpaceId string
Indexer spaceIndexer
Installer bundledObjectsInstaller
TechSpace techspace.TechSpace
KeyValueObserver keyvalueobserver.Observer
}
func NewTechSpace(deps TechSpaceDeps) (*TechSpace, error) {
sp := &TechSpace{
space: &space{
indexer: deps.Indexer,
installer: deps.Installer,
common: deps.CommonSpace,
loadMandatoryObjectsCh: make(chan struct{}),
personalSpaceId: deps.PersonalSpaceId,
aclIdentity: deps.AccountService.Account().SignKey.GetPublic(),
},
TechSpace: deps.TechSpace,
}
var err error
sp.keyValueService, err = keyvalueservice.New(sp.common, deps.KeyValueObserver)
if err != nil {
return nil, fmt.Errorf("create key value service: %w", err)
}
sp.Cache = objectcache.New(deps.AccountService, deps.ObjectFactory, deps.PersonalSpaceId, sp)
return sp, nil
}
func (s *TechSpace) Close(ctx context.Context) error {
if s == nil || s.space == nil {
return nil
}
err := s.space.Close(ctx)
if err != nil {
log.Error("close tech space", zap.Error(err))
}
err = s.TechSpace.Close(ctx)
if err != nil {
log.Error("close tech space", zap.Error(err))
}
return nil
}
func (s *TechSpace) GetTypeIdByKey(ctx context.Context, key domain.TypeKey) (id string, err error) {
if key == bundle.TypeKeyProfile {
return key.BundledURL(), nil
}
return s.space.GetTypeIdByKey(ctx, key)
}
func (s *TechSpace) CommonSpace() commonspace.Space {
return s.space.CommonSpace()
}