gof3/tree/generic/driver_tree.go
Earl Warren 8c2c776833
All checks were successful
/ backend-checks (push) Successful in 2m23s
chore: move to code.forgejo.org
2024-05-09 13:30:59 +02:00

80 lines
1.5 KiB
Go

// Copyright Earl Warren <contact@earl-warren.org>
// Copyright Loïc Dachary <loic@dachary.org>
// SPDX-License-Identifier: MIT
package generic
import (
"context"
"code.forgejo.org/f3/gof3/v3/f3"
"code.forgejo.org/f3/gof3/v3/logger"
"github.com/google/go-cmp/cmp"
)
type TreeDriverInterface interface {
logger.Interface
GetTree() TreeInterface
SetTree(TreeInterface)
GetPageSize() int
SetPageSize(int)
AllocateID() bool
Init()
Diff(a, b NodeDriverInterface) string
Factory(ctx context.Context, kind Kind) NodeDriverInterface
}
var DefaultPageSize = int(25)
type NullTreeDriver struct {
logger.Logger
tree TreeInterface
pageSize int
}
func (o *NullTreeDriver) Init() {
o.pageSize = DefaultPageSize
}
func NewNullTreeDriver() TreeDriverInterface {
d := &NullTreeDriver{}
d.Init()
return d
}
func (o *NullTreeDriver) SetTree(tree TreeInterface) {
o.tree = tree
if tree != nil {
o.SetLogger(tree)
}
}
func (o *NullTreeDriver) GetTree() TreeInterface { return o.tree }
func (o *NullTreeDriver) GetPageSize() int { return o.pageSize }
func (o *NullTreeDriver) SetPageSize(pageSize int) { o.pageSize = pageSize }
func (o *NullTreeDriver) AllocateID() bool { return true }
func (o *NullTreeDriver) Diff(a, b NodeDriverInterface) string {
aFormat := a.ToFormat()
bFormat := b.ToFormat()
cmpOptions := f3.NewCmpOptions(aFormat)
return cmp.Diff(aFormat, bFormat, cmpOptions)
}
func (o *NullTreeDriver) Factory(ctx context.Context, kind Kind) NodeDriverInterface {
d := NewNullDriver()
d.SetTreeDriver(o)
return d
}