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
|
|
}
|
|
}
|