1
0
Fork 0
golang-forgejo-f3-gof3/tree/generic/driver_tree.go
Daniel Baumann 03bfe4079e
Adding upstream version 3.10.8.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-05-18 09:37:23 +02:00

78 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/kind"
"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.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()
return cmp.Diff(aFormat, bFormat)
}
func (o *NullTreeDriver) Factory(ctx context.Context, kind kind.Kind) NodeDriverInterface {
d := NewNullDriver()
d.SetTreeDriver(o)
return d
}