diff --git a/.gitignore b/.gitignore index 97927dad..5d1bd6cc 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,9 @@ # Golang vendor folder vendor +# database +db + # Intelli-J files .idea diff --git a/client/api/controller.go b/client/api/controller.go index 090e43a9..c172603f 100644 --- a/client/api/controller.go +++ b/client/api/controller.go @@ -8,7 +8,7 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/common/account" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/util/keys/symmetric" - "golang.org/x/exp/rand" + "math/rand" ) type Controller interface { diff --git a/client/clientspace/clientcache/treecache.go b/client/clientspace/clientcache/treecache.go index 1a5f4df8..50319cba 100644 --- a/client/clientspace/clientcache/treecache.go +++ b/client/clientspace/clientcache/treecache.go @@ -4,12 +4,13 @@ import ( "context" "errors" "github.com/anytypeio/go-anytype-infrastructure-experiments/client/clientspace" - "github.com/anytypeio/go-anytype-infrastructure-experiments/client/document" + "github.com/anytypeio/go-anytype-infrastructure-experiments/client/document/textdocument" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/treegetter" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/ocache" + "go.uber.org/zap" "time" ) @@ -23,13 +24,29 @@ const spaceKey ctxKey = 0 type treeCache struct { gcttl int cache ocache.OCache - docService document.Service clientService clientspace.Service } type TreeCache interface { treegetter.TreeGetter - GetDocument(ctx context.Context, spaceId, id string) (doc document.TextDocument, err error) + GetDocument(ctx context.Context, spaceId, id string) (doc textdocument.TextDocument, err error) +} + +type updateListener struct { +} + +func (u *updateListener) Update(tree tree.ObjectTree) { + log.With( + zap.Strings("heads", tree.Heads()), + zap.String("tree id", tree.ID())). + Debug("updating tree") +} + +func (u *updateListener) Rebuild(tree tree.ObjectTree) { + log.With( + zap.Strings("heads", tree.Heads()), + zap.String("tree id", tree.ID())). + Debug("rebuilding tree") } func New(ttl int) TreeCache { @@ -48,7 +65,6 @@ func (c *treeCache) Close(ctx context.Context) (err error) { func (c *treeCache) Init(a *app.App) (err error) { c.clientService = a.MustComponent(clientspace.CName).(clientspace.Service) - c.docService = a.MustComponent(document.CName).(document.Service) c.cache = ocache.New( func(ctx context.Context, id string) (value ocache.Object, err error) { spaceId := ctx.Value(spaceKey).(string) @@ -56,7 +72,7 @@ func (c *treeCache) Init(a *app.App) (err error) { if err != nil { return } - return document.NewTextDocument(context.Background(), space, id, c.docService) + return textdocument.NewTextDocument(context.Background(), space, id, &updateListener{}) }, ocache.WithLogger(log.Sugar()), ocache.WithGCPeriod(time.Minute), @@ -69,13 +85,13 @@ func (c *treeCache) Name() (name string) { return treegetter.CName } -func (c *treeCache) GetDocument(ctx context.Context, spaceId, id string) (doc document.TextDocument, err error) { +func (c *treeCache) GetDocument(ctx context.Context, spaceId, id string) (doc textdocument.TextDocument, err error) { ctx = context.WithValue(ctx, spaceKey, spaceId) v, err := c.cache.Get(ctx, id) if err != nil { return } - doc = v.(document.TextDocument) + doc = v.(textdocument.TextDocument) return } diff --git a/client/cmd/client.go b/client/cmd/client.go index e529c4f9..b3698842 100644 --- a/client/cmd/client.go +++ b/client/cmd/client.go @@ -34,8 +34,9 @@ var log = logger.NewNamed("main") var ( flagConfigFile = flag.String("c", "etc/client.yml", "path to config file") - flagVersion = flag.Bool("v", false, "show version and exit") - flagHelp = flag.Bool("h", false, "show help and exit") + // we can't use "v" here because of glog init (through badger) setting flag.Bool with "v" + flagVersion = flag.Bool("ver", false, "show version and exit") + flagHelp = flag.Bool("h", false, "show help and exit") ) func main() { diff --git a/client/document/service.go b/client/document/service.go index 47c2d250..399363b8 100644 --- a/client/document/service.go +++ b/client/document/service.go @@ -4,18 +4,15 @@ import ( "context" "github.com/anytypeio/go-anytype-infrastructure-experiments/client/clientspace" "github.com/anytypeio/go-anytype-infrastructure-experiments/client/clientspace/clientcache" + "github.com/anytypeio/go-anytype-infrastructure-experiments/client/document/textdocument" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/account" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" - "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree/updatelistener" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/treegetter" - "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/tree" - "go.uber.org/zap" ) type Service interface { app.Component - updatelistener.UpdateListener CreateDocument(spaceId string) (id string, err error) AllDocumentIds(spaceId string) (ids []string, err error) AddText(spaceId, documentId, text string) (err error) @@ -52,7 +49,7 @@ func (s *service) CreateDocument(spaceId string) (id string, err error) { if err != nil { return } - doc, err := createTextDocument(context.Background(), space, s.account, s) + doc, err := textdocument.CreateTextDocument(context.Background(), space, s.account, nil) if err != nil { return } @@ -84,17 +81,3 @@ func (s *service) DumpDocumentTree(spaceId, documentId string) (dump string, err } return doc.Tree().DebugDump() } - -func (s *service) Update(tree tree.ObjectTree) { - log.With( - zap.Strings("heads", tree.Heads()), - zap.String("tree id", tree.ID())). - Debug("updating tree") -} - -func (s *service) Rebuild(tree tree.ObjectTree) { - log.With( - zap.Strings("heads", tree.Heads()), - zap.String("tree id", tree.ID())). - Debug("rebuilding tree") -} diff --git a/client/document/textdocument.go b/client/document/textdocument/textdocument.go similarity index 98% rename from client/document/textdocument.go rename to client/document/textdocument/textdocument.go index 1d6d3238..b749a759 100644 --- a/client/document/textdocument.go +++ b/client/document/textdocument/textdocument.go @@ -1,4 +1,4 @@ -package document +package textdocument import ( "context" @@ -23,7 +23,7 @@ type textDocument struct { account account.Service } -func createTextDocument( +func CreateTextDocument( ctx context.Context, space commonspace.Space, account account.Service, diff --git a/client/go.mod b/client/go.mod index 5a2355fa..8aeae7af 100644 --- a/client/go.mod +++ b/client/go.mod @@ -8,6 +8,7 @@ require ( github.com/anytypeio/go-anytype-infrastructure-experiments/common v0.0.0-00010101000000-000000000000 github.com/dgraph-io/badger/v3 v3.2103.3 github.com/gogo/protobuf v1.3.2 + go.uber.org/zap v1.23.0 ) require ( @@ -59,7 +60,6 @@ require ( go.opencensus.io v0.23.0 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.8.0 // indirect - go.uber.org/zap v1.23.0 // indirect golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect golang.org/x/image v0.0.0-20200119044424-58c23975cae1 // indirect golang.org/x/net v0.0.0-20220920183852-bf014ff85ad5 // indirect diff --git a/common/config/config.go b/common/config/config.go index cbd6b757..06168a4d 100644 --- a/common/config/config.go +++ b/common/config/config.go @@ -54,3 +54,7 @@ func (c Config) GetGRPCServer() GrpcServer { func (c Config) GetAccount() Account { return c.Account } + +func (c Config) GetMetric() Metric { + return c.Metric +}