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