mirror of
https://github.com/nabbar/golib.git
synced 2025-09-27 04:06:05 +08:00

- Driver: add instance to compare keys - Driver: add optionnal function to search keys with a pattern of keys - Driver: add fakefunction search based on compare & list to replace a dedicated search function - Table: add function search function Other: - Bump dependencies
50 lines
927 B
Go
50 lines
927 B
Go
package kvdriver
|
|
|
|
type CompareEqual[K comparable] func(ref, part K) bool
|
|
type CompareContains[K comparable] func(ref, part K) bool
|
|
type CompareEmpty[K comparable] func(part K) bool
|
|
|
|
type Compare[K comparable] interface {
|
|
IsEqual(ref, part K) bool
|
|
IsContains(ref, part K) bool
|
|
IsEmpty(part K) bool
|
|
}
|
|
|
|
func NewCompare[K comparable](eq CompareEqual[K], cn CompareContains[K], em CompareEmpty[K]) Compare[K] {
|
|
return &cmp[K]{
|
|
feq: eq,
|
|
fcn: cn,
|
|
fem: em,
|
|
}
|
|
}
|
|
|
|
type cmp[K comparable] struct {
|
|
feq CompareEqual[K]
|
|
fcn CompareContains[K]
|
|
fem CompareEmpty[K]
|
|
}
|
|
|
|
func (o *cmp[K]) IsEqual(ref, part K) bool {
|
|
if o == nil || o.feq == nil {
|
|
return false
|
|
}
|
|
|
|
return o.feq(ref, part)
|
|
}
|
|
|
|
func (o *cmp[K]) IsContains(ref, part K) bool {
|
|
if o == nil || o.fcn == nil {
|
|
return false
|
|
}
|
|
|
|
return o.fcn(ref, part)
|
|
}
|
|
|
|
func (o *cmp[K]) IsEmpty(part K) bool {
|
|
if o == nil || o.fem == nil {
|
|
return false
|
|
}
|
|
|
|
return o.fem(part)
|
|
}
|