47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
|
package datastore
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
)
|
||
|
|
||
|
type SpecDefinitionRepository interface {
|
||
|
Upsert(ctx context.Context, name string, version string, schema []byte) (*SpecDefinition, error)
|
||
|
Get(ctx context.Context, name string, version string) (*SpecDefinition, error)
|
||
|
Delete(ctx context.Context, name string, version string) error
|
||
|
|
||
|
Query(ctx context.Context, opts ...SpecDefinitionQueryOptionFunc) ([]SpecDefinitionHeader, int, error)
|
||
|
}
|
||
|
|
||
|
type SpecDefinitionQueryOptionFunc func(*SpecDefinitionQueryOptions)
|
||
|
|
||
|
type SpecDefinitionQueryOptions struct {
|
||
|
Limit *int
|
||
|
Offset *int
|
||
|
Names []string
|
||
|
Versions []string
|
||
|
}
|
||
|
|
||
|
func WithSpecDefinitionQueryLimit(limit int) SpecDefinitionQueryOptionFunc {
|
||
|
return func(opts *SpecDefinitionQueryOptions) {
|
||
|
opts.Limit = &limit
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func WithSpecDefinitionQueryOffset(offset int) SpecDefinitionQueryOptionFunc {
|
||
|
return func(opts *SpecDefinitionQueryOptions) {
|
||
|
opts.Offset = &offset
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func WithSpecDefinitionQueryNames(names ...string) SpecDefinitionQueryOptionFunc {
|
||
|
return func(opts *SpecDefinitionQueryOptions) {
|
||
|
opts.Names = names
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func WithSpecDefinitionQueryVersions(versions ...string) SpecDefinitionQueryOptionFunc {
|
||
|
return func(opts *SpecDefinitionQueryOptions) {
|
||
|
opts.Versions = versions
|
||
|
}
|
||
|
}
|