1 // Copyright (c) 2024, Jack J. Moh
2 // All rights reserved.
3 // Use of this source code is governed by a BSD-style
4 // license that can be found in the LICENSE file.
13 "func.xyz/persiskv/cli"
16 var PersisKVCfg
= persiskvCfg
{
18 "01.persiskv.func.xyz",
19 "02.persiskv.func.xyz",
24 Register("persiskv", &PersisKVCfg
)
27 type persiskvCfg
struct {
28 Hosts
[]string `json:"hosts"`
30 clis sync
.Map
`json:"-"`
33 func (cfg
*persiskvCfg
) GetBucket(bucket
string) persiskv
.Client
{
34 cli
, ok
:= cfg
.clis
.Load(bucket
)
36 return cli
.(persiskv
.Client
)
38 cli
, err
:= cfg
.newBucket(bucket
)
42 cli
, _
= cfg
.clis
.LoadOrStore(bucket
, cli
)
43 return cli
.(persiskv
.Client
)
46 func (cfg
*persiskvCfg
) newBucket(bucket
string) (persiskv
.Client
, error
) {
48 h
.Write([]byte(bucket
))
50 host
:= cfg
.Hosts
[code%uint
64(len(cfg
.Hosts
))]
51 url
:= "https://" + host
+ ":" + strconv
.Itoa(int(PortPersisKV
))
52 return persiskv
.New(url
, bucket
)