server/datasource/options.go (100 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package datasource import ( "time" ) const DefaultTimeout = 60 * time.Second type Config struct { } // NewDefaultFindOpts return default options func NewDefaultFindOpts() FindOptions { return FindOptions{ Timeout: DefaultTimeout, } } // NewDefaultWriteOptions return default options func NewDefaultWriteOptions() WriteOptions { return WriteOptions{ SyncEnable: false, } } // NewWriteOptions return options with write option func NewWriteOptions(option ...WriteOption) WriteOptions { opt := WriteOptions{ SyncEnable: false, } for _, op := range option { op(&opt) } return opt } // WriteOptions is option for create ,update and delete kv type WriteOptions struct { SyncEnable bool } // FindOptions is option to find key value type FindOptions struct { ExactLabels bool Status string Depth int ID string Key string Labels map[string]string LabelFormat string ClearLabel bool Timeout time.Duration // Offset the offset of the response, start at 0 Offset int64 // Limit the page size of the response, dot not paging if limit=0 Limit int64 CaseSensitive bool } // WriteOption is functional option to create, update and delete kv type WriteOption func(*WriteOptions) // FindOption is functional option to find key value type FindOption func(*FindOptions) // WithSync indicates that the synchronization function is on func WithSync(enabled bool) WriteOption { return func(o *WriteOptions) { o.SyncEnable = enabled } } // WithCaseSensitive tell model service whether to match case of letters or not. func WithCaseSensitive() FindOption { return func(o *FindOptions) { o.CaseSensitive = true } } // WithExactLabels tell model service to return only one kv matches the labels func WithExactLabels() FindOption { return func(o *FindOptions) { o.ExactLabels = true } } // WithID find by kvID func WithID(id string) FindOption { return func(o *FindOptions) { o.ID = id } } // WithKey find by key func WithKey(key string) FindOption { return func(o *FindOptions) { o.Key = key } } // WithStatus enabled/disabled func WithStatus(status string) FindOption { return func(o *FindOptions) { o.Status = status } } // WithTimeout will return err if execution take too long func WithTimeout(d time.Duration) FindOption { return func(o *FindOptions) { o.Timeout = d } } // WithLabels find kv by labels func WithLabels(labels map[string]string) FindOption { return func(o *FindOptions) { o.Labels = labels } } // WithLabelFormat find kv by label string func WithLabelFormat(label string) FindOption { return func(o *FindOptions) { o.LabelFormat = label } } // WithLimit tells service paging limit func WithLimit(l int64) FindOption { return func(o *FindOptions) { o.Limit = l } } // WithOffset tells service paging offset func WithOffset(os int64) FindOption { return func(o *FindOptions) { o.Offset = os } }