diff --git a/go.mod b/go.mod index 86d2b2e66603975e24e4f78b4650a3100b17ece5..63de9afb6a6cab76b4b155e7f090d3dc470806b9 100644 --- a/go.mod +++ b/go.mod @@ -17,8 +17,8 @@ require ( github.com/rs/xid v1.5.0 github.com/stretchr/testify v1.8.4 go.mongodb.org/mongo-driver v1.13.0 - go.opentelemetry.io/otel v1.20.0 - go.opentelemetry.io/otel/trace v1.20.0 + go.opentelemetry.io/otel v1.21.0 + go.opentelemetry.io/otel/trace v1.21.0 go.uber.org/zap v1.26.0 golang.org/x/crypto v0.15.0 golang.org/x/image v0.14.0 @@ -42,22 +42,25 @@ require ( github.com/gosimple/unidecode v1.0.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/klauspost/compress v1.17.3 // indirect + github.com/kr/pretty v0.3.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/montanaflynn/stats v0.7.1 // indirect github.com/nats-io/nkeys v0.4.6 // indirect github.com/nats-io/nuid v1.0.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/stretchr/objx v0.5.1 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.2 // indirect github.com/xdg-go/stringprep v1.0.4 // indirect github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect - go.opentelemetry.io/otel/metric v1.20.0 // indirect + go.opentelemetry.io/otel/metric v1.21.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/sync v0.5.0 // indirect golang.org/x/sys v0.14.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect ) diff --git a/go.sum b/go.sum index d11a9be6ed599fe2754ece384aef33f07f3ec19d..3273d5c5392761e9f4e31b6736f355f3bd1eba6d 100644 --- a/go.sum +++ b/go.sum @@ -9,6 +9,7 @@ github.com/avast/retry-go/v4 v4.5.1 h1:AxIx0HGi4VZ3I02jr78j5lZ3M6x1E0Ivxa6b0pUUh github.com/avast/retry-go/v4 v4.5.1/go.mod h1:/sipNsvNB3RRuT5iNcb6h73nw3IBmXJ/H3XrCQYSOpc= github.com/bep/gowebp v0.2.0 h1:ZVfK8i9PpZqKHEmthQSt3qCnnHycbLzBPEsVtk2ch2Q= github.com/bep/gowebp v0.2.0/go.mod h1:ZhFodwdiFp8ehGJpF4LdPl6unxZm9lLFjxD3z2h2AgI= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -54,6 +55,13 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.17.3 h1:qkRjuerhUU1EmXLYGkSH6EZL+vPSxIrYjLNAK4slzwA= github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lucasb-eyer/go-colorful v1.0.2/go.mod h1:0MS4r+7BZKSJ5mw4/S5MPN+qHFF1fYclkSPilDOKW0s= github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= @@ -74,6 +82,7 @@ github.com/nats-io/nkeys v0.4.6 h1:IzVe95ru2CT6ta874rt9saQRkWfe2nFj1NtvYSLqMzY= github.com/nats-io/nkeys v0.4.6/go.mod h1:4DxZNzenSVd1cYQoAa8948QY3QDjrHfcfVADymtkpts= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -81,6 +90,9 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rivo/tview v0.0.0-20200219210816-cd38d7432498/go.mod h1:6lkG1x+13OShEf0EaOCaTQYyB7d5nSbb181KtjlS+84= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/sanity-io/litter v1.2.0/go.mod h1:JF6pZUFgu2Q0sBZ+HSV35P8TVPI1TTzEwyu9FXAw2W4= @@ -109,12 +121,12 @@ github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.mongodb.org/mongo-driver v1.13.0 h1:67DgFFjYOCMWdtTEmKFpV3ffWlFnh+CYZ8ZS/tXWUfY= go.mongodb.org/mongo-driver v1.13.0/go.mod h1:/rGBTebI3XYboVmgz+Wv3Bcbl3aD0QF9zl6kDDw18rQ= -go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= -go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= -go.opentelemetry.io/otel/metric v1.20.0 h1:ZlrO8Hu9+GAhnepmRGhSU7/VkpjrNowxRN9GyKR4wzA= -go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM= -go.opentelemetry.io/otel/trace v1.20.0 h1:+yxVAPZPbQhbC3OfAkeIVTky6iTFpcr4SiY9om7mXSQ= -go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU= +go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= +go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= +go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= +go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= +go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= +go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -181,8 +193,9 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/perxis-proto b/perxis-proto index 78539871cf2d9f6b187865c4855450143dec4e79..59b21fcd765d2a6208f65dccdd04a63e55a0016e 160000 --- a/perxis-proto +++ b/perxis-proto @@ -1 +1 @@ -Subproject commit 78539871cf2d9f6b187865c4855450143dec4e79 +Subproject commit 59b21fcd765d2a6208f65dccdd04a63e55a0016e diff --git a/pkg/account/client.go b/pkg/account/client.go index 53ae9fb81924ec95370b3e9110de8fbfb93d3400..112a71f67fe130bb57c6483ad4793565bca8d0bd 100644 --- a/pkg/account/client.go +++ b/pkg/account/client.go @@ -53,9 +53,9 @@ func NewClient(conn *grpc.ClientConn, opts ...Option) *Account { func WithCaching(client *Account, size int, ttl time.Duration) *Account { c := *client - c.Members = serviceMembers.CachingMiddleware(cache.NewCache(size, ttl))(client.Members) - c.Organizations = serviceOrganizations.CachingMiddleware(cache.NewCache(size, ttl))(client.Organizations) - c.Users = serviceUsers.CachingMiddleware(cache.NewCache(size, ttl))(client.Users) + c.Members = serviceMembers.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Members) + c.Organizations = serviceOrganizations.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Organizations) + c.Users = serviceUsers.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Users) return &c } diff --git a/pkg/cache/cache.go b/pkg/cache/cache.go index c71b426f00cbca17ca0b2597e222e3e2a57ea58d..e8feb4ce5309bfa92feec72c4624190a3c1e1c79 100644 --- a/pkg/cache/cache.go +++ b/pkg/cache/cache.go @@ -1,88 +1,7 @@ package cache -import ( - "fmt" - "time" - - "git.perx.ru/perxis/perxis-go/pkg/service" - lru "github.com/hashicorp/golang-lru/v2" - "go.uber.org/zap" -) - -const ( - defaultCacheSize = 1000 - defaultTTL = 30 * time.Second -) - -type Cache struct { - cache *lru.Cache[interface{}, interface{}] - ttl time.Duration - logger *zap.Logger -} - -type item struct { - value interface{} - expiredAt time.Time -} - -func NewCache(size int, ttl time.Duration, opts ...interface{}) *Cache { - if size == 0 { - size = defaultCacheSize - } - if ttl == 0 { - ttl = defaultTTL - } - c, err := lru.New[interface{}, interface{}](size) - if err != nil { - panic(err) - } - ch := &Cache{ - cache: c, - ttl: ttl, - logger: zap.NewNop(), - } - - for _, o := range opts { - switch p := o.(type) { - case *zap.Logger: - ch.logger = p - } - } - - ch.logger = ch.logger.Named("Cache") - - return ch -} - -func (c *Cache) Set(key, value interface{}) (err error) { - c.cache.Add(key, &item{value: value, expiredAt: time.Now().Add(c.ttl)}) - c.logger.Debug("Set", zap.String("key", fmt.Sprintf("%v", key)), zap.String("ptr", fmt.Sprintf("%p", value))) - return nil -} - -func (c *Cache) Get(key interface{}) (value interface{}, err error) { - val, ok := c.cache.Get(key) - if ok { - v := val.(*item) - if v.expiredAt.Before(time.Now()) { - _ = c.Remove(key) - c.logger.Debug("Expired", zap.String("key", fmt.Sprintf("%v", key)), zap.String("ptr", fmt.Sprintf("%p", v.value))) - return nil, service.ErrNotFound - } - c.logger.Debug("Hit", zap.String("key", fmt.Sprintf("%v", key)), zap.String("ptr", fmt.Sprintf("%p", v.value))) - return v.value, nil - } - c.logger.Debug("Miss", zap.String("key", fmt.Sprintf("%v", key))) - return nil, service.ErrNotFound -} - -func (c *Cache) Remove(key interface{}) (err error) { - present := c.cache.Remove(key) - c.logger.Debug("Remove", zap.String("key", fmt.Sprintf("%v", key))) - - if !present { - err = service.ErrNotFound - } - - return +type Cache interface { + Set(key, value any) error + Get(key any) (any, error) + Remove(key any) error } diff --git a/pkg/cache/memory_cache.go b/pkg/cache/memory_cache.go new file mode 100644 index 0000000000000000000000000000000000000000..12b9b55812bbfb11646f828a4a3e643027687c4b --- /dev/null +++ b/pkg/cache/memory_cache.go @@ -0,0 +1,90 @@ +package cache + +import ( + "fmt" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/service" + lru "github.com/hashicorp/golang-lru/v2" + "go.uber.org/zap" +) + +const ( + defaultCacheSize = 1000 + defaultTTL = 30 * time.Second +) + +var _ Cache = &MemoryCache{} + +type MemoryCache struct { + cache *lru.Cache[interface{}, interface{}] + ttl time.Duration + logger *zap.Logger +} + +type item struct { + value interface{} + expiredAt time.Time +} + +func NewMemoryCache(size int, ttl time.Duration, opts ...interface{}) *MemoryCache { + if size == 0 { + size = defaultCacheSize + } + if ttl == 0 { + ttl = defaultTTL + } + c, err := lru.New[interface{}, interface{}](size) + if err != nil { + panic(err) + } + ch := &MemoryCache{ + cache: c, + ttl: ttl, + logger: zap.NewNop(), + } + + for _, o := range opts { + switch p := o.(type) { + case *zap.Logger: + ch.logger = p + } + } + + ch.logger = ch.logger.Named("Cache") + + return ch +} + +func (c *MemoryCache) Set(key, value interface{}) (err error) { + c.cache.Add(key, &item{value: value, expiredAt: time.Now().Add(c.ttl)}) + c.logger.Debug("Set", zap.String("key", fmt.Sprintf("%v", key)), zap.String("ptr", fmt.Sprintf("%p", value))) + return nil +} + +func (c *MemoryCache) Get(key interface{}) (value interface{}, err error) { + val, ok := c.cache.Get(key) + if ok { + v := val.(*item) + if v.expiredAt.Before(time.Now()) { + _ = c.Remove(key) + c.logger.Debug("Expired", zap.String("key", fmt.Sprintf("%v", key)), zap.String("ptr", fmt.Sprintf("%p", v.value))) + return nil, service.ErrNotFound + } + c.logger.Debug("Hit", zap.String("key", fmt.Sprintf("%v", key)), zap.String("ptr", fmt.Sprintf("%p", v.value))) + return v.value, nil + } + c.logger.Debug("Miss", zap.String("key", fmt.Sprintf("%v", key))) + return nil, service.ErrNotFound +} + +func (c *MemoryCache) Remove(key interface{}) (err error) { + present := c.cache.Remove(key) + c.logger.Debug("Remove", zap.String("key", fmt.Sprintf("%v", key))) + + if !present { + err = service.ErrNotFound + } + + return +} diff --git a/pkg/cache/cache_test.go b/pkg/cache/memory_cache_test.go similarity index 93% rename from pkg/cache/cache_test.go rename to pkg/cache/memory_cache_test.go index b0d4304a499f0970cc695b667429c896763c1a33..b7cf246f6923f6fe131de760a5cbf3272fec2da1 100644 --- a/pkg/cache/cache_test.go +++ b/pkg/cache/memory_cache_test.go @@ -10,7 +10,7 @@ import ( func TestCache(t *testing.T) { t.Run("Simple", func(t *testing.T) { - c := NewCache(10, 0) + c := NewMemoryCache(10, 0) { val, err := c.Get("test_key") @@ -37,7 +37,7 @@ func TestCache(t *testing.T) { } }) t.Run("Value Evicted", func(t *testing.T) { - c := NewCache(1, 0) + c := NewMemoryCache(1, 0) { err := c.Set("test_key_1", "test_val_1") @@ -62,7 +62,7 @@ func TestCache(t *testing.T) { }) t.Run("TTL expired", func(t *testing.T) { - c := NewCache(10, 10*time.Millisecond) + c := NewMemoryCache(10, 10*time.Millisecond) err := c.Set("test_key", "test_val") require.NoError(t, err) diff --git a/pkg/clients/middleware/caching_middleware.go b/pkg/clients/middleware/caching_middleware.go index 1733c0de4a8dde8f011d46b2b77005f8924e60bb..08af3a47a7cd3f23b8ae07e4050f9e18f1be1ee3 100644 --- a/pkg/clients/middleware/caching_middleware.go +++ b/pkg/clients/middleware/caching_middleware.go @@ -12,7 +12,7 @@ func makeKey(ss ...string) string { return strings.Join(ss, "-") } -func CachingMiddleware(cache *cache.Cache) Middleware { +func CachingMiddleware(cache cache.Cache) Middleware { return func(next service.Clients) service.Clients { return &cachingMiddleware{ cache: cache, @@ -22,7 +22,7 @@ func CachingMiddleware(cache *cache.Cache) Middleware { } type cachingMiddleware struct { - cache *cache.Cache + cache cache.Cache next service.Clients } diff --git a/pkg/clients/middleware/caching_middleware_test.go b/pkg/clients/middleware/caching_middleware_test.go index b842e1183a5425a4b3aec8d59b0720e5627767ed..2a90c1db2c322ca9509cb2bf9bdd63b252e67c68 100644 --- a/pkg/clients/middleware/caching_middleware_test.go +++ b/pkg/clients/middleware/caching_middleware_test.go @@ -31,7 +31,7 @@ func TestClientsCache(t *testing.T) { t.Run("Get from cache", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("Get", mock.Anything, spaceID, cltID).Return(&clients.Client{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}, nil).Once() @@ -52,7 +52,7 @@ func TestClientsCache(t *testing.T) { t.Run("GetBy from cache", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("GetBy", mock.Anything, spaceID, &clients.GetByParams{OAuthClientID: clientID}).Return(&clients.Client{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}, nil).Once() @@ -73,7 +73,7 @@ func TestClientsCache(t *testing.T) { t.Run("List", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("List", mock.Anything, spaceID).Return([]*clients.Client{{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}}, nil).Once() @@ -92,7 +92,7 @@ func TestClientsCache(t *testing.T) { t.Run("After Update", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("Get", mock.Anything, spaceID, cltID).Return(&clients.Client{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}, nil).Once() cs.On("List", mock.Anything, spaceID).Return([]*clients.Client{{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}}, nil).Once() @@ -143,7 +143,7 @@ func TestClientsCache(t *testing.T) { t.Run("After Update(List)", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("List", mock.Anything, spaceID).Return([]*clients.Client{{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}}, nil).Once() @@ -172,7 +172,7 @@ func TestClientsCache(t *testing.T) { t.Run("After Delete", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("Get", mock.Anything, spaceID, cltID).Return(&clients.Client{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}, nil).Once() cs.On("List", mock.Anything, spaceID).Return([]*clients.Client{{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}}, nil).Once() @@ -222,7 +222,7 @@ func TestClientsCache(t *testing.T) { t.Run("After Delete(List)", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("List", mock.Anything, spaceID).Return([]*clients.Client{{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}}, nil).Once() @@ -250,7 +250,7 @@ func TestClientsCache(t *testing.T) { t.Run("After Create", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("List", mock.Anything, spaceID).Return([]*clients.Client{{ID: cltID, SpaceID: spaceID, Name: "client_1"}}, nil).Once() @@ -279,7 +279,7 @@ func TestClientsCache(t *testing.T) { t.Run("After Enable", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) tr := true cs.On("Get", mock.Anything, spaceID, cltID).Return(&clients.Client{ID: cltID, SpaceID: spaceID, OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}, Disabled: &tr}, nil).Once() @@ -329,7 +329,7 @@ func TestClientsCache(t *testing.T) { t.Run("After Enable(List)", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) tr := true cs.On("List", mock.Anything, spaceID).Return([]*clients.Client{{ID: cltID, SpaceID: spaceID, OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}, Disabled: &tr}}, nil).Once() @@ -359,7 +359,7 @@ func TestClientsCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("Get", mock.Anything, spaceID, cltID).Return(&clients.Client{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID}}, nil).Once() cs.On("Get", mock.Anything, spaceID, cltID).Return(&clients.Client{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID}}, nil).Once() diff --git a/pkg/collaborators/middleware/caching_middleware.go b/pkg/collaborators/middleware/caching_middleware.go index ea595919431cd653e74ca0ffe24b62ff3b2d0a10..7533ae551ed47a421d3fe8ed643ce679e07fddc2 100644 --- a/pkg/collaborators/middleware/caching_middleware.go +++ b/pkg/collaborators/middleware/caching_middleware.go @@ -12,7 +12,7 @@ func makeKey(ss ...string) string { return strings.Join(ss, "-") } -func CachingMiddleware(cache *cache.Cache) Middleware { +func CachingMiddleware(cache cache.Cache) Middleware { return func(next service.Collaborators) service.Collaborators { return &cachingMiddleware{ cache: cache, @@ -22,7 +22,7 @@ func CachingMiddleware(cache *cache.Cache) Middleware { } type cachingMiddleware struct { - cache *cache.Cache + cache cache.Cache next service.Collaborators } diff --git a/pkg/collaborators/middleware/caching_middleware_test.go b/pkg/collaborators/middleware/caching_middleware_test.go index b7dc09281a9f972e9eafde3dd87ce628b0ea2fae..ea2ccaddb2621c306e317d6d873a455489a6a2a6 100644 --- a/pkg/collaborators/middleware/caching_middleware_test.go +++ b/pkg/collaborators/middleware/caching_middleware_test.go @@ -31,7 +31,7 @@ func TestCollaboratorsCache(t *testing.T) { t.Run("Get from cache", func(t *testing.T) { cs := &csmocks.Collaborators{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("Get", mock.Anything, spaceID, userID).Return(spaceRole, nil).Once() @@ -48,7 +48,7 @@ func TestCollaboratorsCache(t *testing.T) { t.Run("ListCollaborators from cache", func(t *testing.T) { cs := &csmocks.Collaborators{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("ListCollaborators", mock.Anything, spaceID).Return([]*collaborators.Collaborator{{SpaceID: spaceID, Subject: userID, Role: spaceRole}}, nil).Once() @@ -64,7 +64,7 @@ func TestCollaboratorsCache(t *testing.T) { t.Run("ListSpaces from cache", func(t *testing.T) { cs := &csmocks.Collaborators{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("ListSpaces", mock.Anything, userID).Return([]*collaborators.Collaborator{{SpaceID: spaceID, Subject: userID, Role: spaceRole}}, nil).Once() @@ -81,7 +81,7 @@ func TestCollaboratorsCache(t *testing.T) { t.Run("After Remove", func(t *testing.T) { cs := &csmocks.Collaborators{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("Get", mock.Anything, spaceID, userID).Return(spaceRole, nil).Once() cs.On("ListCollaborators", mock.Anything, spaceID).Return([]*collaborators.Collaborator{{SpaceID: spaceID, Subject: userID, Role: spaceRole}}, nil).Once() @@ -135,7 +135,7 @@ func TestCollaboratorsCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { cs := &csmocks.Collaborators{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("Get", mock.Anything, spaceID, userID).Return(spaceRole, nil).Once() cs.On("ListCollaborators", mock.Anything, spaceID).Return([]*collaborators.Collaborator{{SpaceID: spaceID, Subject: userID, Role: spaceRole}}, nil).Once() diff --git a/pkg/collections/middleware/caching_middleware.go b/pkg/collections/middleware/caching_middleware.go index 469c39df98e1edb80495257999b6fecf81011247..de34d42af02f7259c66aea5799210c50c0e1961e 100644 --- a/pkg/collections/middleware/caching_middleware.go +++ b/pkg/collections/middleware/caching_middleware.go @@ -19,7 +19,7 @@ func makeKey(spaceId, envId, collectionId string, disableSchemaIncludes bool) st return s } -func CachingMiddleware(cache *cache.Cache, envs envService.Environments) Middleware { +func CachingMiddleware(cache cache.Cache, envs envService.Environments) Middleware { return func(next service.Collections) service.Collections { return &cachingMiddleware{ cache: cache, @@ -30,7 +30,7 @@ func CachingMiddleware(cache *cache.Cache, envs envService.Environments) Middlew } type cachingMiddleware struct { - cache *cache.Cache + cache cache.Cache next service.Collections envs envService.Environments } diff --git a/pkg/collections/middleware/caching_middleware_test.go b/pkg/collections/middleware/caching_middleware_test.go index c9e58b6886e121bf6b1f2edd37d9f4d9a69c9319..ac284ce5464af7469fee9ad4a7babf377b9c335a 100644 --- a/pkg/collections/middleware/caching_middleware_test.go +++ b/pkg/collections/middleware/caching_middleware_test.go @@ -36,7 +36,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() col.On("Get", mock.Anything, spaceID, envID, colID).Return(&collections.Collection{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}, nil).Once() @@ -60,7 +60,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) col.On("Get", mock.Anything, spaceID, envAlias, colID).Return(&collections.Collection{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}, nil).Once() env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() @@ -84,7 +84,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() col.On("Get", mock.Anything, spaceID, envID, colID, mock.Anything).Run(func(args mock.Arguments) { @@ -104,7 +104,7 @@ func TestCollections_Cache(t *testing.T) { // col := &colsmocks.Collections{} // env := &envmocks.Environments{} // - // svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + // svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) // // col.On("List", mock.Anything, spaceID, envID).Return([]*collections.Collection{{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}}, nil).Once() // env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() @@ -130,7 +130,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) col.On("List", mock.Anything, spaceID, envAlias, mock.Anything).Return([]*collections.Collection{{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}}, nil).Once() col.On("List", mock.Anything, spaceID, envID, mock.Anything).Return([]*collections.Collection{{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}}, nil).Once() @@ -150,7 +150,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() col.On("Get", mock.Anything, spaceID, envID, colID).Return(&collections.Collection{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}, nil).Once() @@ -199,7 +199,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() //env.On("Get", mock.Anything, spaceID, envAlias).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() @@ -252,7 +252,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Twice() col.On("Get", mock.Anything, spaceID, envID, colID).Return(&collections.Collection{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}, nil).Once() @@ -317,7 +317,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Twice() col.On("Get", mock.Anything, spaceID, envID, colID).Return(&collections.Collection{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}, nil).Once() @@ -379,7 +379,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) //env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() col.On("List", mock.Anything, spaceID, envID, mock.Anything).Return([]*collections.Collection{{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}}, nil).Twice() @@ -430,7 +430,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil) col.On("Get", mock.Anything, spaceID, envID, colID).Return(&collections.Collection{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}, nil).Once() diff --git a/pkg/content/client.go b/pkg/content/client.go index af5ba5bf9956cfaa51e0636acff0d98c82edfb38..bbdd62bb9474afd54ce63606055c244311478adc 100644 --- a/pkg/content/client.go +++ b/pkg/content/client.go @@ -76,15 +76,15 @@ func NewClient(conn *grpc.ClientConn, opts ...Option) *Content { func WithCaching(client *Content, size int, ttl time.Duration) *Content { c := *client - c.Clients = clientsSvc.CachingMiddleware(cache.NewCache(size, ttl))(client.Clients) - c.Environments = environmentsSvc.CachingMiddleware(cache.NewCache(size, ttl))(client.Environments) - c.Locales = localesSvc.CachingMiddleware(cache.NewCache(size, ttl))(client.Locales) - c.Roles = rolesSvc.CachingMiddleware(cache.NewCache(size, ttl))(client.Roles) - c.Spaces = spacesSvc.CachingMiddleware(cache.NewCache(size, ttl))(client.Spaces) - c.Items = itemsSvc.CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), c.Environments)(client.Items) - c.Collections = collectionsSvc.CachingMiddleware(cache.NewCache(size, ttl), c.Environments)(client.Collections) - c.Collaborators = collaboratorsSvc.CachingMiddleware(cache.NewCache(size, ttl))(client.Collaborators) - c.Invitations = invitationsSvc.CachingMiddleware(cache.NewCache(size, ttl))(client.Invitations) + c.Clients = clientsSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Clients) + c.Environments = environmentsSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Environments) + c.Locales = localesSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Locales) + c.Roles = rolesSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Roles) + c.Spaces = spacesSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Spaces) + c.Items = itemsSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), c.Environments)(client.Items) + c.Collections = collectionsSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl), c.Environments)(client.Collections) + c.Collaborators = collaboratorsSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Collaborators) + c.Invitations = invitationsSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Invitations) return &c } diff --git a/pkg/delivery/client/client.go b/pkg/delivery/client/client.go index 1de0dd684a2344264ad217c2834fbb74f19d837f..e3fb962c22cd76d4adc2cbd5ca9d6195eb9e41d6 100644 --- a/pkg/delivery/client/client.go +++ b/pkg/delivery/client/client.go @@ -44,10 +44,10 @@ func NewClient(conn *grpc.ClientConn, opts ...Option) (delivery.Delivery, error) func WithCaching(cfg *deliveryservice.Config, size int, ttl time.Duration) *deliveryservice.Config { c := *cfg - c.Environments = environments.CachingMiddleware(cache.NewCache(size, ttl))(cfg.Environments) - c.Locales = locales.CachingMiddleware(cache.NewCache(size, ttl))(cfg.Locales) - c.Items = items.CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), c.Environments)(cfg.Items) - c.Collections = collections.CachingMiddleware(cache.NewCache(size, ttl), c.Environments)(cfg.Collections) + c.Environments = environments.CachingMiddleware(cache.NewMemoryCache(size, ttl))(cfg.Environments) + c.Locales = locales.CachingMiddleware(cache.NewMemoryCache(size, ttl))(cfg.Locales) + c.Items = items.CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), c.Environments)(cfg.Items) + c.Collections = collections.CachingMiddleware(cache.NewMemoryCache(size, ttl), c.Environments)(cfg.Collections) return &c } diff --git a/pkg/environments/middleware/caching_middleware.go b/pkg/environments/middleware/caching_middleware.go index dfe5b927117bfecdb56d11ab0e14582e43ef75b7..0801730a0e93947c847352a9710a02f85ae94ee0 100644 --- a/pkg/environments/middleware/caching_middleware.go +++ b/pkg/environments/middleware/caching_middleware.go @@ -12,7 +12,7 @@ func makeKey(ss ...string) string { return strings.Join(ss, "-") } -func CachingMiddleware(cache *cache.Cache) Middleware { +func CachingMiddleware(cache cache.Cache) Middleware { return func(next service.Environments) service.Environments { return &cachingMiddleware{ cache: cache, @@ -22,7 +22,7 @@ func CachingMiddleware(cache *cache.Cache) Middleware { } type cachingMiddleware struct { - cache *cache.Cache + cache cache.Cache next service.Environments } diff --git a/pkg/environments/middleware/caching_middleware_test.go b/pkg/environments/middleware/caching_middleware_test.go index 2e1b73a8366873dfb31b8d9fd24d31ac894025ee..784ce35632e2bcd74993ce499f4ec1db329041d7 100644 --- a/pkg/environments/middleware/caching_middleware_test.go +++ b/pkg/environments/middleware/caching_middleware_test.go @@ -31,7 +31,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("Get from cache", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{envAlias}}, nil).Once() @@ -52,7 +52,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("Get from cache(by Alias)", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("Get", mock.Anything, spaceID, envAlias).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{envAlias}}, nil).Once() @@ -73,7 +73,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("List from cache", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("List", mock.Anything, spaceID).Return([]*environments.Environment{{ID: envID, SpaceID: spaceID, Description: "Environment"}}, nil).Once() @@ -91,7 +91,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After SetAlias", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{"envID2"}}, nil).Once() envs.On("List", mock.Anything, spaceID).Return([]*environments.Environment{{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{"envID2"}}}, nil).Once() @@ -135,7 +135,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After RemoveAlias", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{"envID2", envAlias}}, nil).Once() envs.On("List", mock.Anything, spaceID).Return([]*environments.Environment{{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{"envID2", envAlias}}}, nil).Once() @@ -184,7 +184,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After Update", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{envAlias}}, nil).Once() envs.On("List", mock.Anything, spaceID).Return([]*environments.Environment{{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{envAlias}}}, nil).Once() @@ -235,7 +235,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After Update(List)", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("List", mock.Anything, spaceID).Return([]*environments.Environment{{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{envAlias}}}, nil).Once() envs.On("Update", mock.Anything, mock.Anything).Return(nil).Once() @@ -262,7 +262,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After Delete", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{envAlias}}, nil).Once() envs.On("List", mock.Anything, spaceID).Return([]*environments.Environment{{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{envAlias}}}, nil).Once() @@ -311,7 +311,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After Create", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("List", mock.Anything, spaceID).Return([]*environments.Environment{{ID: envID, SpaceID: spaceID, Description: "Environment"}}, nil).Once() @@ -338,7 +338,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After size exceeded", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(1, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(1, ttl))(envs) envs.On("Get", mock.Anything, spaceID, "envID2").Return(&environments.Environment{ID: "envID2", SpaceID: spaceID, Description: "Environment2"}, nil).Once() envs.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment"}, nil).Once() @@ -364,7 +364,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment"}, nil).Once() v1, err := svc.Get(ctx, spaceID, envID) diff --git a/pkg/invitations/middleware/caching_middleware.go b/pkg/invitations/middleware/caching_middleware.go index 651514a530039e7859fe146bd921c9d82e9ebd01..5f2a1086a15c09d55b5461e029036b091d68dcfe 100644 --- a/pkg/invitations/middleware/caching_middleware.go +++ b/pkg/invitations/middleware/caching_middleware.go @@ -8,7 +8,7 @@ import ( services "git.perx.ru/perxis/perxis-go/pkg/options" ) -func CachingMiddleware(cache *cache.Cache) Middleware { +func CachingMiddleware(cache cache.Cache) Middleware { return func(next service.Invitations) service.Invitations { return &cachingMiddleware{ cache: cache, @@ -18,7 +18,7 @@ func CachingMiddleware(cache *cache.Cache) Middleware { } type cachingMiddleware struct { - cache *cache.Cache + cache cache.Cache next service.Invitations } diff --git a/pkg/invitations/middleware/caching_middleware_test.go b/pkg/invitations/middleware/caching_middleware_test.go index 8c83d76ec0a35f1fa06e1065da3624ab3f7198e3..e7fac6f545463644ddd7476a43123f248b9a16b8 100644 --- a/pkg/invitations/middleware/caching_middleware_test.go +++ b/pkg/invitations/middleware/caching_middleware_test.go @@ -32,7 +32,7 @@ func TestLocalesCache(t *testing.T) { t.Run("Get from Cache", func(t *testing.T) { inv := &invmocks.Invitations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(inv) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(inv) inv.On("Get", mock.Anything, invID).Return(&invitations.Invitation{ID: invID, Email: email, OrgID: orgID}, nil).Once() @@ -50,7 +50,7 @@ func TestLocalesCache(t *testing.T) { t.Run("Get from Accept", func(t *testing.T) { inv := &invmocks.Invitations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(inv) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(inv) inv.On("Get", mock.Anything, invID).Return(&invitations.Invitation{ID: invID, Email: email, OrgID: orgID}, nil).Once() @@ -77,7 +77,7 @@ func TestLocalesCache(t *testing.T) { t.Run("Get from Delete", func(t *testing.T) { inv := &invmocks.Invitations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(inv) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(inv) inv.On("Get", mock.Anything, invID).Return(&invitations.Invitation{ID: invID, Email: email, OrgID: orgID}, nil).Once() @@ -104,7 +104,7 @@ func TestLocalesCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { inv := &invmocks.Invitations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(inv) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(inv) inv.On("Get", mock.Anything, invID).Return(&invitations.Invitation{ID: invID, Email: email, OrgID: orgID}, nil).Once() diff --git a/pkg/items/middleware/caching_middleware.go b/pkg/items/middleware/caching_middleware.go index 2d76f2150eeacc1cd70e9697c3db63853ef47908..6b11851381fb9dc13b630477052f05d4148bc765 100644 --- a/pkg/items/middleware/caching_middleware.go +++ b/pkg/items/middleware/caching_middleware.go @@ -13,7 +13,7 @@ func makeKey(ss ...string) string { return strings.Join(ss, "-") } -func CachingMiddleware(cache, cachePublished *cache.Cache, envs envService.Environments) Middleware { +func CachingMiddleware(cache, cachePublished cache.Cache, envs envService.Environments) Middleware { return func(next service.Items) service.Items { return &cachingMiddleware{ cache: cache, @@ -25,8 +25,8 @@ func CachingMiddleware(cache, cachePublished *cache.Cache, envs envService.Envir } type cachingMiddleware struct { - cache *cache.Cache - cachePublished *cache.Cache + cache cache.Cache + cachePublished cache.Cache envs envService.Environments service.Items } diff --git a/pkg/items/middleware/caching_middleware_test.go b/pkg/items/middleware/caching_middleware_test.go index b7ea569db094e7905b6aae2ce8bebfb381849f95..c3e862b1ffe3dd5e7fdde976cc4aa09e316a600f 100644 --- a/pkg/items/middleware/caching_middleware_test.go +++ b/pkg/items/middleware/caching_middleware_test.go @@ -37,7 +37,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -61,7 +61,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envAlias, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -85,7 +85,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("GetPublished", mock.Anything, spaceID, envID, colID, itemID, mock.Anything).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -109,7 +109,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("GetPublished", mock.Anything, spaceID, envAlias, colID, itemID, mock.Anything).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -138,7 +138,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Twice() itms.On("GetPublished", mock.Anything, spaceID, envAlias, colID, itemID, mock.Anything).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -176,7 +176,7 @@ func TestItemsCache(t *testing.T) { env := &envmocks.Environments{} env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, Data: map[string]interface{}{"f1": "d1"}}, nil).Once() @@ -208,7 +208,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -241,7 +241,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -273,7 +273,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StatePublished}, nil).Once() @@ -313,7 +313,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StatePublished}, nil).Once() @@ -346,7 +346,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -379,7 +379,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, Data: map[string]interface{}{"f1": "d1"}}, nil).Once() @@ -412,7 +412,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StatePublished}, nil).Once() @@ -445,7 +445,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("GetPublished", mock.Anything, spaceID, envID, colID, itemID, mock.Anything).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StatePublished, Data: map[string]interface{}{"f1": "d1"}}, nil).Once() @@ -486,7 +486,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("GetPublished", mock.Anything, spaceID, envID, colID, itemID, mock.Anything).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -527,7 +527,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("GetPublished", mock.Anything, spaceID, envID, colID, itemID, mock.Anything).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StatePublished}, nil).Once() @@ -568,7 +568,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("GetPublished", mock.Anything, spaceID, envID, colID, itemID, mock.Anything).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StatePublished}, nil).Once() @@ -609,7 +609,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() @@ -657,7 +657,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() diff --git a/pkg/locales/middleware/caching_middleware.go b/pkg/locales/middleware/caching_middleware.go index 9d1624950aab3d798070844ed2e9d89142430c2c..13928a5166f2187e85a5e7da63861509e3f69d3a 100644 --- a/pkg/locales/middleware/caching_middleware.go +++ b/pkg/locales/middleware/caching_middleware.go @@ -7,7 +7,7 @@ import ( service "git.perx.ru/perxis/perxis-go/pkg/locales" ) -func CachingMiddleware(cache *cache.Cache) Middleware { +func CachingMiddleware(cache cache.Cache) Middleware { return func(next service.Locales) service.Locales { return &cachingMiddleware{ cache: cache, @@ -17,7 +17,7 @@ func CachingMiddleware(cache *cache.Cache) Middleware { } type cachingMiddleware struct { - cache *cache.Cache + cache cache.Cache next service.Locales } diff --git a/pkg/locales/middleware/caching_middleware_test.go b/pkg/locales/middleware/caching_middleware_test.go index d39e78d78e487c7c2c90f906559dee400aaa414b..281aa49611a83e4a0a28f1064dbf5fe149dd29f3 100644 --- a/pkg/locales/middleware/caching_middleware_test.go +++ b/pkg/locales/middleware/caching_middleware_test.go @@ -28,7 +28,7 @@ func TestLocalesCache(t *testing.T) { t.Run("List from Cache", func(t *testing.T) { loc := &locmocks.Locales{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(loc) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(loc) loc.On("List", mock.Anything, spaceID).Return([]*locales.Locale{{ID: loc1, Name: "name1", SpaceID: spaceID}}, nil).Once() @@ -46,7 +46,7 @@ func TestLocalesCache(t *testing.T) { t.Run("After Delete", func(t *testing.T) { loc := &locmocks.Locales{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(loc) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(loc) loc.On("List", mock.Anything, spaceID).Return([]*locales.Locale{{ID: loc1, Name: "name1", SpaceID: spaceID}}, nil).Once() @@ -74,7 +74,7 @@ func TestLocalesCache(t *testing.T) { t.Run("After Create", func(t *testing.T) { loc := &locmocks.Locales{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(loc) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(loc) loc.On("List", mock.Anything, spaceID).Return([]*locales.Locale{{ID: loc1, Name: "name1", SpaceID: spaceID}}, nil).Once() @@ -106,7 +106,7 @@ func TestLocalesCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { loc := &locmocks.Locales{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(loc) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(loc) loc.On("List", mock.Anything, spaceID).Return([]*locales.Locale{{ID: loc1, Name: "name1", SpaceID: spaceID}}, nil).Once() diff --git a/pkg/members/middleware/caching_middleware.go b/pkg/members/middleware/caching_middleware.go index cffbc7c46a35da518eee412044cc18c1e2aa9970..0af3f76f9e5aa1eeeee01c36f2e7509e35e951c3 100644 --- a/pkg/members/middleware/caching_middleware.go +++ b/pkg/members/middleware/caching_middleware.go @@ -12,7 +12,7 @@ func makeKey(ss ...string) string { return strings.Join(ss, "-") } -func CachingMiddleware(cache *cache.Cache) Middleware { +func CachingMiddleware(cache cache.Cache) Middleware { return func(next service.Members) service.Members { return &cachingMiddleware{ cache: cache, @@ -22,7 +22,7 @@ func CachingMiddleware(cache *cache.Cache) Middleware { } type cachingMiddleware struct { - cache *cache.Cache + cache cache.Cache next service.Members } diff --git a/pkg/members/middleware/caching_middleware_test.go b/pkg/members/middleware/caching_middleware_test.go index 4564dbe41a1fb943e86ad247a171497cffe01c18..eda7eb3a2a85123d36d20f09e9bd0c5188b609a9 100644 --- a/pkg/members/middleware/caching_middleware_test.go +++ b/pkg/members/middleware/caching_middleware_test.go @@ -26,7 +26,7 @@ func TestMembersCache(t *testing.T) { t.Run("Get from cache", func(t *testing.T) { mbrs := &mocksmembers.Members{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(mbrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs) mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once() @@ -43,7 +43,7 @@ func TestMembersCache(t *testing.T) { t.Run("Invalidate cache", func(t *testing.T) { t.Run("After Set", func(t *testing.T) { mbrs := &mocksmembers.Members{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(mbrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs) mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once() @@ -69,7 +69,7 @@ func TestMembersCache(t *testing.T) { t.Run("After Remove", func(t *testing.T) { mbrs := &mocksmembers.Members{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(mbrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs) mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once() @@ -96,7 +96,7 @@ func TestMembersCache(t *testing.T) { t.Run("After RemoveAll", func(t *testing.T) { mbrs := &mocksmembers.Members{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(mbrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs) mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once() mbrs.On("ListMembers", mock.Anything, orgId).Return([]*members.Member{{OrgId: orgId, UserId: userId, Role: members.RoleOwner}}, nil) @@ -124,7 +124,7 @@ func TestMembersCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { mbrs := &mocksmembers.Members{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(mbrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs) mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once() diff --git a/pkg/organizations/middleware/caching_middleware.go b/pkg/organizations/middleware/caching_middleware.go index 8350fb9275f51461165062d1f5d759bd5a17241a..18649df9511f12a658cbb3966d507a76108939d8 100644 --- a/pkg/organizations/middleware/caching_middleware.go +++ b/pkg/organizations/middleware/caching_middleware.go @@ -8,7 +8,7 @@ import ( service "git.perx.ru/perxis/perxis-go/pkg/organizations" ) -func CachingMiddleware(cache *cache.Cache) Middleware { +func CachingMiddleware(cache cache.Cache) Middleware { return func(next service.Organizations) service.Organizations { return &cachingMiddleware{ cache: cache, @@ -18,7 +18,7 @@ func CachingMiddleware(cache *cache.Cache) Middleware { } type cachingMiddleware struct { - cache *cache.Cache + cache cache.Cache next service.Organizations } diff --git a/pkg/organizations/middleware/caching_middleware_test.go b/pkg/organizations/middleware/caching_middleware_test.go index f468baf0d6d3653e54f90856bf8731c2626ddc65..19cd14d5b2e808f3d4c22f77d8b115a27a9025cf 100644 --- a/pkg/organizations/middleware/caching_middleware_test.go +++ b/pkg/organizations/middleware/caching_middleware_test.go @@ -28,7 +28,7 @@ func TestOrganizationsCache(t *testing.T) { t.Run("Get from cache", func(t *testing.T) { orgs := &mocksorgs.Organizations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(orgs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(orgs) orgs.On("Get", mock.Anything, orgId).Return(&organizations.Organization{ID: orgId, Name: "Organization"}, nil).Once() @@ -45,7 +45,7 @@ func TestOrganizationsCache(t *testing.T) { t.Run("Invalidate cache", func(t *testing.T) { t.Run("After Update", func(t *testing.T) { orgs := &mocksorgs.Organizations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(orgs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(orgs) orgs.On("Get", mock.Anything, orgId).Return(&organizations.Organization{ID: orgId, Name: "Organization"}, nil).Once() @@ -70,7 +70,7 @@ func TestOrganizationsCache(t *testing.T) { t.Run("After Delete", func(t *testing.T) { orgs := &mocksorgs.Organizations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(orgs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(orgs) orgs.On("Get", mock.Anything, orgId).Return(&organizations.Organization{ID: orgId, Name: "Organization"}, nil).Once() @@ -94,7 +94,7 @@ func TestOrganizationsCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { orgs := &mocksorgs.Organizations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(orgs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(orgs) orgs.On("Get", mock.Anything, orgId).Return(&organizations.Organization{ID: orgId, Name: "Organization"}, nil).Once() diff --git a/pkg/references/middleware/telemetry_middleware.go b/pkg/references/middleware/telemetry_middleware.go new file mode 100644 index 0000000000000000000000000000000000000000..16fe5d30d2e5cc8dc82adfc7d7a3db87acf45636 --- /dev/null +++ b/pkg/references/middleware/telemetry_middleware.go @@ -0,0 +1,89 @@ +// Code generated by gowrap. DO NOT EDIT. +// template: ../../../assets/templates/middleware/telemetry +// gowrap: http://github.com/hexdigest/gowrap + +package middleware + +//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/telemetry -o telemetry_middleware.go -l "" + +import ( + "context" + + "git.perx.ru/perxis/perxis-go/pkg/items" + "git.perx.ru/perxis/perxis-go/pkg/references" + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/trace" +) + +// telemetryMiddleware implements references.References interface instrumented with opentracing spans +type telemetryMiddleware struct { + references.References + _instance string + _spanDecorator func(span trace.Span, params, results map[string]interface{}) +} + +// TelemetryMiddleware returns telemetryMiddleware +func TelemetryMiddleware(base references.References, instance string, spanDecorator ...func(span trace.Span, params, results map[string]interface{})) telemetryMiddleware { + d := telemetryMiddleware{ + References: base, + _instance: instance, + } + + if len(spanDecorator) > 0 && spanDecorator[0] != nil { + d._spanDecorator = spanDecorator[0] + } + + return d +} + +// Get implements references.References +func (_d telemetryMiddleware) Get(ctx context.Context, spaceId string, envId string, references []*references.Reference) (items []*items.Item, notfound []*references.Reference, err error) { + ctx, _span := otel.Tracer(_d._instance).Start(ctx, "References.Get") + defer func() { + if _d._spanDecorator != nil { + _d._spanDecorator(_span, map[string]interface{}{ + "ctx": ctx, + "spaceId": spaceId, + "envId": envId, + "references": references}, map[string]interface{}{ + "items": items, + "notfound": notfound, + "err": err}) + } else if err != nil { + _span.RecordError(err) + _span.SetAttributes(attribute.String("event", "error")) + _span.SetAttributes(attribute.String("message", err.Error())) + } + + _span.End() + }() + return _d.References.Get(ctx, spaceId, envId, references) +} + +// Publish implements references.References +func (_d telemetryMiddleware) Publish(ctx context.Context, spaceId string, envId string, references []*references.Reference, recursive bool, force bool) (published []*references.Reference, notfound []*references.Reference, unpublished []*references.Reference, err error) { + ctx, _span := otel.Tracer(_d._instance).Start(ctx, "References.Publish") + defer func() { + if _d._spanDecorator != nil { + _d._spanDecorator(_span, map[string]interface{}{ + "ctx": ctx, + "spaceId": spaceId, + "envId": envId, + "references": references, + "recursive": recursive, + "force": force}, map[string]interface{}{ + "published": published, + "notfound": notfound, + "unpublished": unpublished, + "err": err}) + } else if err != nil { + _span.RecordError(err) + _span.SetAttributes(attribute.String("event", "error")) + _span.SetAttributes(attribute.String("message", err.Error())) + } + + _span.End() + }() + return _d.References.Publish(ctx, spaceId, envId, references, recursive, force) +} diff --git a/pkg/roles/middleware/caching_middleware.go b/pkg/roles/middleware/caching_middleware.go index 86725074b2d211f916c8ec126ad866ca89a0cc56..3f46087ec59e3ee71cd441b87e16a995d82eb7ea 100644 --- a/pkg/roles/middleware/caching_middleware.go +++ b/pkg/roles/middleware/caching_middleware.go @@ -12,7 +12,7 @@ func makeKey(ss ...string) string { return strings.Join(ss, "-") } -func CachingMiddleware(cache *cache.Cache) Middleware { +func CachingMiddleware(cache cache.Cache) Middleware { return func(next service.Roles) service.Roles { return &cachingMiddleware{ cache: cache, @@ -22,7 +22,7 @@ func CachingMiddleware(cache *cache.Cache) Middleware { } type cachingMiddleware struct { - cache *cache.Cache + cache cache.Cache next service.Roles } diff --git a/pkg/roles/middleware/caching_middleware_test.go b/pkg/roles/middleware/caching_middleware_test.go index ff0165f8e9234d70d084a934d923b4e0b721ee0e..9d5d64f4231cf8bd86d533224fd50e762eebdcab 100644 --- a/pkg/roles/middleware/caching_middleware_test.go +++ b/pkg/roles/middleware/caching_middleware_test.go @@ -30,7 +30,7 @@ func TestRolesCache(t *testing.T) { t.Run("Get from cache", func(t *testing.T) { rl := &rsmocks.Roles{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(rl) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl) rl.On("Get", mock.Anything, spaceID, roleID).Return(&roles.Role{ID: roleID, SpaceID: spaceID, Description: "Role"}, nil).Once() @@ -47,7 +47,7 @@ func TestRolesCache(t *testing.T) { t.Run("List from cache", func(t *testing.T) { rl := &rsmocks.Roles{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(rl) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl) rl.On("List", mock.Anything, spaceID).Return([]*roles.Role{{ID: roleID, SpaceID: spaceID, Description: "Role"}}, nil).Once() @@ -65,7 +65,7 @@ func TestRolesCache(t *testing.T) { t.Run("After Update", func(t *testing.T) { rl := &rsmocks.Roles{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(rl) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl) rl.On("Get", mock.Anything, spaceID, roleID).Return(&roles.Role{ID: roleID, SpaceID: spaceID, Description: "Role"}, nil).Once() rl.On("List", mock.Anything, spaceID).Return([]*roles.Role{{ID: roleID, SpaceID: spaceID, Description: "Role"}}, nil).Once() @@ -106,7 +106,7 @@ func TestRolesCache(t *testing.T) { t.Run("After Delete", func(t *testing.T) { rl := &rsmocks.Roles{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(rl) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl) rl.On("Get", mock.Anything, spaceID, roleID).Return(&roles.Role{ID: roleID, SpaceID: spaceID, Description: "Role"}, nil).Once() rl.On("List", mock.Anything, spaceID).Return([]*roles.Role{{ID: roleID, SpaceID: spaceID, Description: "Role"}}, nil).Once() @@ -149,7 +149,7 @@ func TestRolesCache(t *testing.T) { t.Run("After Create", func(t *testing.T) { rl := &rsmocks.Roles{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(rl) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl) rl.On("List", mock.Anything, spaceID).Return([]*roles.Role{{ID: roleID, SpaceID: spaceID, Description: "Role"}}, nil).Once() @@ -177,7 +177,7 @@ func TestRolesCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { rl := &rsmocks.Roles{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(rl) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl) rl.On("Get", mock.Anything, spaceID, roleID).Return(&roles.Role{ID: roleID, SpaceID: spaceID, Description: "Role"}, nil).Once() diff --git a/pkg/spaces/middleware/caching_middleware.go b/pkg/spaces/middleware/caching_middleware.go index 99c50a90e56fc8d25a34eca38962689f48f5abf3..f99e21a1f4a254ef6fb0890d09776b9b4738fd38 100644 --- a/pkg/spaces/middleware/caching_middleware.go +++ b/pkg/spaces/middleware/caching_middleware.go @@ -9,7 +9,7 @@ import ( func orgKey(orgID string) string { return "org-" + orgID } -func CachingMiddleware(cache *cache.Cache) Middleware { +func CachingMiddleware(cache cache.Cache) Middleware { return func(next service.Spaces) service.Spaces { m := &cachingMiddleware{ cache: cache, @@ -21,7 +21,7 @@ func CachingMiddleware(cache *cache.Cache) Middleware { } type cachingMiddleware struct { - cache *cache.Cache + cache cache.Cache next service.Spaces } diff --git a/pkg/spaces/middleware/caching_middleware_test.go b/pkg/spaces/middleware/caching_middleware_test.go index a79a136f41690d0a6c6a16709bb9a591e5688735..e87ceb38c79c6b15d76ab6f6ff8f628a680a5aa6 100644 --- a/pkg/spaces/middleware/caching_middleware_test.go +++ b/pkg/spaces/middleware/caching_middleware_test.go @@ -31,7 +31,7 @@ func TestRolesCache(t *testing.T) { t.Run("Get from cache", func(t *testing.T) { sp := &spmocks.Spaces{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(sp) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp) sp.On("Get", mock.Anything, spaceID).Return(&spaces.Space{ID: spaceID, OrgID: orgID, Name: "Space"}, nil).Once() @@ -48,7 +48,7 @@ func TestRolesCache(t *testing.T) { t.Run("List from cache", func(t *testing.T) { sp := &spmocks.Spaces{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(sp) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp) sp.On("List", mock.Anything, orgID).Return([]*spaces.Space{{ID: spaceID, OrgID: orgID, Name: "Space"}}, nil).Once() @@ -66,7 +66,7 @@ func TestRolesCache(t *testing.T) { t.Run("After Update", func(t *testing.T) { sp := &spmocks.Spaces{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(sp) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp) sp.On("Get", mock.Anything, spaceID).Return(&spaces.Space{ID: spaceID, OrgID: orgID, Name: "Space"}, nil).Once() sp.On("List", mock.Anything, orgID).Return([]*spaces.Space{{ID: spaceID, OrgID: orgID, Name: "Space"}}, nil).Once() @@ -107,7 +107,7 @@ func TestRolesCache(t *testing.T) { t.Run("After UpdateConfig", func(t *testing.T) { sp := &spmocks.Spaces{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(sp) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp) sp.On("Get", mock.Anything, spaceID).Return(&spaces.Space{ID: spaceID, OrgID: orgID, Name: "Space"}, nil).Once() sp.On("List", mock.Anything, orgID).Return([]*spaces.Space{{ID: spaceID, OrgID: orgID, Name: "Space"}}, nil).Once() @@ -148,7 +148,7 @@ func TestRolesCache(t *testing.T) { t.Run("After Delete", func(t *testing.T) { sp := &spmocks.Spaces{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(sp) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp) sp.On("Get", mock.Anything, spaceID).Return(&spaces.Space{ID: spaceID, OrgID: orgID, Name: "Space"}, nil).Once() sp.On("List", mock.Anything, orgID).Return([]*spaces.Space{{ID: spaceID, OrgID: orgID, Name: "Space"}}, nil).Once() @@ -189,7 +189,7 @@ func TestRolesCache(t *testing.T) { t.Run("After Create", func(t *testing.T) { sp := &spmocks.Spaces{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(sp) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp) sp.On("List", mock.Anything, orgID).Return([]*spaces.Space{{ID: spaceID, OrgID: orgID, Name: "Space"}}, nil).Once() @@ -217,7 +217,7 @@ func TestRolesCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { sp := &spmocks.Spaces{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(sp) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp) sp.On("Get", mock.Anything, spaceID).Return(&spaces.Space{ID: spaceID, OrgID: orgID, Name: "Space"}, nil).Once() diff --git a/pkg/spaces/service.go b/pkg/spaces/service.go index e77cd813387acb1cf8c4dfc95bf795422ac8732c..c75dab18e60f2e37d6dae9007de7563d7ca8b751 100644 --- a/pkg/spaces/service.go +++ b/pkg/spaces/service.go @@ -57,7 +57,7 @@ func IsSpaceAvailable(ctx context.Context, spcs Spaces, spaceId string) error { return errors.Wrap(err, "space not available") } - if spc.State != StateReady { + if spc.StateInfo != nil && spc.StateInfo.State != StateReady { return errors.New("space not available") } diff --git a/pkg/spaces/service_test.go b/pkg/spaces/service_test.go new file mode 100644 index 0000000000000000000000000000000000000000..30594bcea39f8ae5a7e3dc85a1bd2cdd35da2054 --- /dev/null +++ b/pkg/spaces/service_test.go @@ -0,0 +1,52 @@ +package spaces + +import ( + "context" + "testing" +) + +// dummySpaces иÑпользуетÑÑ Ð´Ð»Ñ Ð¸Ð¼Ð¸Ñ‚Ð°Ñ†Ð¸Ð¸ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Spaces +// Моки иÑпользовать не можем, так как получаетÑÑ Ñ†Ð¸ÐºÐ»Ð¸Ñ‡ÐµÑкий импорт +type dummySpaces struct { + Spaces + space *Space +} + +func (t *dummySpaces) Get(_ context.Context, _ string) (*Space, error) { return t.space, nil } + +func TestIsSpaceAvailable(t *testing.T) { + tests := []struct { + name string + space *Space + wantErr bool + }{ + { + "Space has nil StateInfo: available", + &Space{ID: "space", OrgID: "org", Name: "test-space"}, + false, + }, + { + "Space state is StateReady: available", + &Space{ID: "space", OrgID: "org", Name: "test-space", StateInfo: &StateInfo{State: StateReady}}, + false, + }, + { + "Space state is StatePreparing: not available", + &Space{ID: "space", OrgID: "org", Name: "test-space", StateInfo: &StateInfo{State: StatePreparing}}, + true, + }, + { + "Space state is StateMigration: not available", + &Space{ID: "space", OrgID: "org", Name: "test-space", StateInfo: &StateInfo{State: StateMigration}}, + true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + spaces := &dummySpaces{space: tt.space} + if err := IsSpaceAvailable(context.Background(), spaces, "space"); (err != nil) != tt.wantErr { + t.Errorf("IsSpaceAvailable() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/pkg/spaces/space.go b/pkg/spaces/space.go index b0aff6a44c45ae08532c9806d3785c6659214897..aa039c46f95e6c1ec3b0e49b65e766dc7451cd9f 100644 --- a/pkg/spaces/space.go +++ b/pkg/spaces/space.go @@ -1,5 +1,7 @@ package spaces +import "time" + type State int const ( @@ -24,13 +26,18 @@ type Space struct { OrgID string `json:"org_id,omitempty" bson:"org_id"` Name string `json:"name,omitempty" bson:"name"` Description string `json:"desc,omitempty" bson:"desc"` - State State `json:"state" bson:"state"` - StateInfo string `json:"stateInfo,omitempty" bson:"stateInfo,omitempty"` - // TransferToOrg - идентификатор организации, в которую был запрошен Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ Ð¿Ñ€Ð¾ÑтранÑтва TransferToOrg string `json:"transfer_to_org" bson:"transfer_to_org"` - Config *Config `json:"config" bson:"config"` + Config *Config `json:"config" bson:"config"` + StateInfo *StateInfo `json:"state_info,omitempty" bson:"state_info,omitempty"` +} + +type StateInfo struct { + State State `json:"state" bson:"state"` + Info string `json:"info" bson:"info"` + Time time.Time `json:"time,omitempty" bson:"time,omitempty"` + DBVersion uint32 `json:"db_version" bson:"db_version"` } func (s Space) Clone() *Space { @@ -48,10 +55,10 @@ func (s Space) Fetch(i interface{}) interface{} { return s.Name case "Description": return s.Description - case "State": - return s.State case "Config": return s.Config + case "StateInfo": + return s.StateInfo default: panic("unknown parameter") } diff --git a/pkg/spaces/transport/grpc/protobuf_type_converters.microgen.go b/pkg/spaces/transport/grpc/protobuf_type_converters.microgen.go index a701d272a48f089a133396c6033409c49e58cd9a..70081af310c72b62f2cc1a7ac0bc32fed007ac60 100644 --- a/pkg/spaces/transport/grpc/protobuf_type_converters.microgen.go +++ b/pkg/spaces/transport/grpc/protobuf_type_converters.microgen.go @@ -7,6 +7,7 @@ package transportgrpc import ( service "git.perx.ru/perxis/perxis-go/pkg/spaces" pb "git.perx.ru/perxis/perxis-go/proto/spaces" + "google.golang.org/protobuf/types/known/timestamppb" ) func PtrConfigToProto(config *service.Config) (*pb.Config, error) { @@ -18,6 +19,18 @@ func PtrConfigToProto(config *service.Config) (*pb.Config, error) { }, nil } +func PtrStateInfoToProto(stateInfo *service.StateInfo) (*pb.StateInfo, error) { + if stateInfo == nil { + return nil, nil + } + return &pb.StateInfo{ + State: pb.State(stateInfo.State), + Info: stateInfo.Info, + DbVersion: int32(stateInfo.DBVersion), + Time: timestamppb.New(stateInfo.Time), + }, nil +} + func ProtoToPtrConfig(protoConfig *pb.Config) (*service.Config, error) { if protoConfig == nil { return nil, nil @@ -27,17 +40,35 @@ func ProtoToPtrConfig(protoConfig *pb.Config) (*service.Config, error) { }, nil } +func ProtoToPtrStateInfo(protoStateInfo *pb.StateInfo) (*service.StateInfo, error) { + if protoStateInfo == nil { + return nil, nil + } + return &service.StateInfo{ + State: service.State(protoStateInfo.State), + Info: protoStateInfo.Info, + Time: protoStateInfo.Time.AsTime(), + DBVersion: uint32(protoStateInfo.DbVersion), + }, nil +} + func PtrSpaceToProto(space *service.Space) (*pb.Space, error) { if space == nil { return nil, nil } cfg, _ := PtrConfigToProto(space.Config) + var state pb.State + if space.StateInfo != nil { + state = pb.State(space.StateInfo.State) + } + stateInfo, _ := PtrStateInfoToProto(space.StateInfo) return &pb.Space{ Id: space.ID, OrgId: space.OrgID, Name: space.Name, Description: space.Description, - State: pb.State(space.State), + State: state, + StateInfo: stateInfo, Config: cfg, TransferToOrg: space.TransferToOrg, }, nil @@ -48,12 +79,13 @@ func ProtoToPtrSpace(protoSpace *pb.Space) (*service.Space, error) { return nil, nil } cfg, _ := ProtoToPtrConfig(protoSpace.Config) + state, _ := ProtoToPtrStateInfo(protoSpace.StateInfo) return &service.Space{ ID: protoSpace.Id, OrgID: protoSpace.OrgId, Name: protoSpace.Name, Description: protoSpace.Description, - State: service.State(protoSpace.State), + StateInfo: state, Config: cfg, TransferToOrg: protoSpace.TransferToOrg, }, nil diff --git a/pkg/users/middleware/caching_middleware.go b/pkg/users/middleware/caching_middleware.go index c5674b82f0a1176304dc2efc0b60b7458839e347..8397bfd3a5c2a02c9ff52c42f9d1e23d431aed8e 100644 --- a/pkg/users/middleware/caching_middleware.go +++ b/pkg/users/middleware/caching_middleware.go @@ -8,7 +8,7 @@ import ( service "git.perx.ru/perxis/perxis-go/pkg/users" ) -func CachingMiddleware(cache *cache.Cache) Middleware { +func CachingMiddleware(cache cache.Cache) Middleware { return func(next service.Users) service.Users { return &cachingMiddleware{ cache: cache, @@ -18,7 +18,7 @@ func CachingMiddleware(cache *cache.Cache) Middleware { } type cachingMiddleware struct { - cache *cache.Cache + cache cache.Cache next service.Users } diff --git a/pkg/users/middleware/caching_middleware_test.go b/pkg/users/middleware/caching_middleware_test.go index fde23379bebd1957e7084fb7dc51ac45be467b59..edc9176baac6656a1d70995b0881055b83642293 100644 --- a/pkg/users/middleware/caching_middleware_test.go +++ b/pkg/users/middleware/caching_middleware_test.go @@ -29,7 +29,7 @@ func TestUsersCache(t *testing.T) { usrs := &mocks.Users{} ctx := context.Background() - svc := CachingMiddleware(cache.NewCache(size, ttl))(usrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs) usrs.On("Get", mock.Anything, userID).Return(&users.User{ID: userID, Name: "User", Identities: []string{identity}}, nil).Once() @@ -51,7 +51,7 @@ func TestUsersCache(t *testing.T) { usrs := &mocks.Users{} ctx := context.Background() - svc := CachingMiddleware(cache.NewCache(size, ttl))(usrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs) usrs.On("GetByIdentity", mock.Anything, identity).Return(&users.User{ID: userID, Name: "User", Identities: []string{identity}}, nil).Once() @@ -74,7 +74,7 @@ func TestUsersCache(t *testing.T) { usrs := &mocks.Users{} ctx := context.Background() - svc := CachingMiddleware(cache.NewCache(size, ttl))(usrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs) usrs.On("Get", mock.Anything, userID).Return(&users.User{ID: userID, Name: "User", Identities: []string{identity}}, nil).Once() usrs.On("Update", mock.Anything, mock.Anything).Return(nil).Once() @@ -107,7 +107,7 @@ func TestUsersCache(t *testing.T) { usrs := &mocks.Users{} ctx := context.Background() - svc := CachingMiddleware(cache.NewCache(size, ttl))(usrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs) usrs.On("Get", mock.Anything, userID).Return(&users.User{ID: userID, Name: "User", Identities: []string{identity}}, nil).Once() usrs.On("Delete", mock.Anything, mock.Anything).Return(nil).Once() @@ -140,7 +140,7 @@ func TestUsersCache(t *testing.T) { usrs := &mocks.Users{} ctx := context.Background() - svc := CachingMiddleware(cache.NewCache(size, ttl))(usrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs) usrs.On("Get", mock.Anything, userID).Return(&users.User{ID: userID, Name: "User", Identities: []string{identity}}, nil).Once() diff --git a/proto/spaces/spaces.pb.go b/proto/spaces/spaces.pb.go index d5c57b12ed99209be6e6bfeb15e5627c7eb58b40..aedef2c39158d62f2fb08844c27c9c7f0fac6cb1 100644 --- a/proto/spaces/spaces.pb.go +++ b/proto/spaces/spaces.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 -// protoc v4.24.3 +// protoc v4.25.1 // source: spaces/spaces.proto package spaces @@ -10,6 +10,7 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" emptypb "google.golang.org/protobuf/types/known/emptypb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" ) @@ -90,13 +91,15 @@ type Space struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - OrgId string `protobuf:"bytes,2,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - State State `protobuf:"varint,5,opt,name=state,proto3,enum=content.spaces.State" json:"state,omitempty"` - TransferToOrg string `protobuf:"bytes,6,opt,name=transfer_to_org,json=transferToOrg,proto3" json:"transfer_to_org,omitempty"` // идентификатор организации, в которую запрошен Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ Ð¿Ñ€Ð¾ÑтранÑтва - Config *Config `protobuf:"bytes,10,opt,name=config,proto3" json:"config,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + OrgId string `protobuf:"bytes,2,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + // Deprecated + State State `protobuf:"varint,5,opt,name=state,proto3,enum=content.spaces.State" json:"state,omitempty"` + TransferToOrg string `protobuf:"bytes,6,opt,name=transfer_to_org,json=transferToOrg,proto3" json:"transfer_to_org,omitempty"` // идентификатор организации, в которую запрошен Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ Ð¿Ñ€Ð¾ÑтранÑтва + Config *Config `protobuf:"bytes,10,opt,name=config,proto3" json:"config,omitempty"` + StateInfo *StateInfo `protobuf:"bytes,11,opt,name=state_info,json=stateInfo,proto3" json:"state_info,omitempty"` } func (x *Space) Reset() { @@ -180,18 +183,97 @@ func (x *Space) GetConfig() *Config { return nil } +func (x *Space) GetStateInfo() *StateInfo { + if x != nil { + return x.StateInfo + } + return nil +} + +type StateInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + State State `protobuf:"varint,1,opt,name=state,proto3,enum=content.spaces.State" json:"state,omitempty"` + Info string `protobuf:"bytes,2,opt,name=info,proto3" json:"info,omitempty"` + DbVersion int32 `protobuf:"varint,3,opt,name=db_version,json=dbVersion,proto3" json:"db_version,omitempty"` + Time *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=time,proto3" json:"time,omitempty"` +} + +func (x *StateInfo) Reset() { + *x = StateInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_spaces_spaces_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateInfo) ProtoMessage() {} + +func (x *StateInfo) ProtoReflect() protoreflect.Message { + mi := &file_spaces_spaces_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateInfo.ProtoReflect.Descriptor instead. +func (*StateInfo) Descriptor() ([]byte, []int) { + return file_spaces_spaces_proto_rawDescGZIP(), []int{1} +} + +func (x *StateInfo) GetState() State { + if x != nil { + return x.State + } + return State_UNKNOWN +} + +func (x *StateInfo) GetInfo() string { + if x != nil { + return x.Info + } + return "" +} + +func (x *StateInfo) GetDbVersion() int32 { + if x != nil { + return x.DbVersion + } + return 0 +} + +func (x *StateInfo) GetTime() *timestamppb.Timestamp { + if x != nil { + return x.Time + } + return nil +} + type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // Deprecated Features []string `protobuf:"bytes,1,rep,name=features,proto3" json:"features,omitempty"` } func (x *Config) Reset() { *x = Config{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[1] + mi := &file_spaces_spaces_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -204,7 +286,7 @@ func (x *Config) String() string { func (*Config) ProtoMessage() {} func (x *Config) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[1] + mi := &file_spaces_spaces_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -217,7 +299,7 @@ func (x *Config) ProtoReflect() protoreflect.Message { // Deprecated: Use Config.ProtoReflect.Descriptor instead. func (*Config) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{1} + return file_spaces_spaces_proto_rawDescGZIP(), []int{2} } func (x *Config) GetFeatures() []string { @@ -238,7 +320,7 @@ type CreateRequest struct { func (x *CreateRequest) Reset() { *x = CreateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[2] + mi := &file_spaces_spaces_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -251,7 +333,7 @@ func (x *CreateRequest) String() string { func (*CreateRequest) ProtoMessage() {} func (x *CreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[2] + mi := &file_spaces_spaces_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -264,7 +346,7 @@ func (x *CreateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRequest.ProtoReflect.Descriptor instead. func (*CreateRequest) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{2} + return file_spaces_spaces_proto_rawDescGZIP(), []int{3} } func (x *CreateRequest) GetSpace() *Space { @@ -285,7 +367,7 @@ type CreateResponse struct { func (x *CreateResponse) Reset() { *x = CreateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[3] + mi := &file_spaces_spaces_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -298,7 +380,7 @@ func (x *CreateResponse) String() string { func (*CreateResponse) ProtoMessage() {} func (x *CreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[3] + mi := &file_spaces_spaces_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -311,7 +393,7 @@ func (x *CreateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateResponse.ProtoReflect.Descriptor instead. func (*CreateResponse) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{3} + return file_spaces_spaces_proto_rawDescGZIP(), []int{4} } func (x *CreateResponse) GetCreated() *Space { @@ -332,7 +414,7 @@ type GetRequest struct { func (x *GetRequest) Reset() { *x = GetRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[4] + mi := &file_spaces_spaces_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -345,7 +427,7 @@ func (x *GetRequest) String() string { func (*GetRequest) ProtoMessage() {} func (x *GetRequest) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[4] + mi := &file_spaces_spaces_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -358,7 +440,7 @@ func (x *GetRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRequest.ProtoReflect.Descriptor instead. func (*GetRequest) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{4} + return file_spaces_spaces_proto_rawDescGZIP(), []int{5} } func (x *GetRequest) GetSpaceId() string { @@ -379,7 +461,7 @@ type GetResponse struct { func (x *GetResponse) Reset() { *x = GetResponse{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[5] + mi := &file_spaces_spaces_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -392,7 +474,7 @@ func (x *GetResponse) String() string { func (*GetResponse) ProtoMessage() {} func (x *GetResponse) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[5] + mi := &file_spaces_spaces_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -405,7 +487,7 @@ func (x *GetResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetResponse.ProtoReflect.Descriptor instead. func (*GetResponse) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{5} + return file_spaces_spaces_proto_rawDescGZIP(), []int{6} } func (x *GetResponse) GetSpace() *Space { @@ -426,7 +508,7 @@ type ListRequest struct { func (x *ListRequest) Reset() { *x = ListRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[6] + mi := &file_spaces_spaces_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -439,7 +521,7 @@ func (x *ListRequest) String() string { func (*ListRequest) ProtoMessage() {} func (x *ListRequest) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[6] + mi := &file_spaces_spaces_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -452,7 +534,7 @@ func (x *ListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRequest.ProtoReflect.Descriptor instead. func (*ListRequest) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{6} + return file_spaces_spaces_proto_rawDescGZIP(), []int{7} } func (x *ListRequest) GetOrgId() string { @@ -473,7 +555,7 @@ type ListResponse struct { func (x *ListResponse) Reset() { *x = ListResponse{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[7] + mi := &file_spaces_spaces_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -486,7 +568,7 @@ func (x *ListResponse) String() string { func (*ListResponse) ProtoMessage() {} func (x *ListResponse) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[7] + mi := &file_spaces_spaces_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -499,7 +581,7 @@ func (x *ListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListResponse.ProtoReflect.Descriptor instead. func (*ListResponse) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{7} + return file_spaces_spaces_proto_rawDescGZIP(), []int{8} } func (x *ListResponse) GetSpaces() []*Space { @@ -520,7 +602,7 @@ type UpdateRequest struct { func (x *UpdateRequest) Reset() { *x = UpdateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[8] + mi := &file_spaces_spaces_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -533,7 +615,7 @@ func (x *UpdateRequest) String() string { func (*UpdateRequest) ProtoMessage() {} func (x *UpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[8] + mi := &file_spaces_spaces_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -546,7 +628,7 @@ func (x *UpdateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRequest.ProtoReflect.Descriptor instead. func (*UpdateRequest) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{8} + return file_spaces_spaces_proto_rawDescGZIP(), []int{9} } func (x *UpdateRequest) GetSpace() *Space { @@ -568,7 +650,7 @@ type UpdateConfigRequest struct { func (x *UpdateConfigRequest) Reset() { *x = UpdateConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[9] + mi := &file_spaces_spaces_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -581,7 +663,7 @@ func (x *UpdateConfigRequest) String() string { func (*UpdateConfigRequest) ProtoMessage() {} func (x *UpdateConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[9] + mi := &file_spaces_spaces_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -594,7 +676,7 @@ func (x *UpdateConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateConfigRequest.ProtoReflect.Descriptor instead. func (*UpdateConfigRequest) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{9} + return file_spaces_spaces_proto_rawDescGZIP(), []int{10} } func (x *UpdateConfigRequest) GetSpaceId() string { @@ -622,7 +704,7 @@ type DeleteRequest struct { func (x *DeleteRequest) Reset() { *x = DeleteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[10] + mi := &file_spaces_spaces_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -635,7 +717,7 @@ func (x *DeleteRequest) String() string { func (*DeleteRequest) ProtoMessage() {} func (x *DeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[10] + mi := &file_spaces_spaces_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -648,7 +730,7 @@ func (x *DeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRequest.ProtoReflect.Descriptor instead. func (*DeleteRequest) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{10} + return file_spaces_spaces_proto_rawDescGZIP(), []int{11} } func (x *DeleteRequest) GetSpaceId() string { @@ -670,7 +752,7 @@ type TransferRequest struct { func (x *TransferRequest) Reset() { *x = TransferRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[11] + mi := &file_spaces_spaces_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -683,7 +765,7 @@ func (x *TransferRequest) String() string { func (*TransferRequest) ProtoMessage() {} func (x *TransferRequest) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[11] + mi := &file_spaces_spaces_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -696,7 +778,7 @@ func (x *TransferRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TransferRequest.ProtoReflect.Descriptor instead. func (*TransferRequest) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{11} + return file_spaces_spaces_proto_rawDescGZIP(), []int{12} } func (x *TransferRequest) GetSpaceId() string { @@ -724,7 +806,7 @@ type AbortTransferRequest struct { func (x *AbortTransferRequest) Reset() { *x = AbortTransferRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[12] + mi := &file_spaces_spaces_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -737,7 +819,7 @@ func (x *AbortTransferRequest) String() string { func (*AbortTransferRequest) ProtoMessage() {} func (x *AbortTransferRequest) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[12] + mi := &file_spaces_spaces_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -750,7 +832,7 @@ func (x *AbortTransferRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AbortTransferRequest.ProtoReflect.Descriptor instead. func (*AbortTransferRequest) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{12} + return file_spaces_spaces_proto_rawDescGZIP(), []int{13} } func (x *AbortTransferRequest) GetSpaceId() string { @@ -771,7 +853,7 @@ type ListTransfersRequest struct { func (x *ListTransfersRequest) Reset() { *x = ListTransfersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[13] + mi := &file_spaces_spaces_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -784,7 +866,7 @@ func (x *ListTransfersRequest) String() string { func (*ListTransfersRequest) ProtoMessage() {} func (x *ListTransfersRequest) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[13] + mi := &file_spaces_spaces_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -797,7 +879,7 @@ func (x *ListTransfersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTransfersRequest.ProtoReflect.Descriptor instead. func (*ListTransfersRequest) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{13} + return file_spaces_spaces_proto_rawDescGZIP(), []int{14} } func (x *ListTransfersRequest) GetOrgId() string { @@ -818,7 +900,7 @@ type ListTransfersResponse struct { func (x *ListTransfersResponse) Reset() { *x = ListTransfersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[14] + mi := &file_spaces_spaces_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -831,7 +913,7 @@ func (x *ListTransfersResponse) String() string { func (*ListTransfersResponse) ProtoMessage() {} func (x *ListTransfersResponse) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[14] + mi := &file_spaces_spaces_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -844,7 +926,7 @@ func (x *ListTransfersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTransfersResponse.ProtoReflect.Descriptor instead. func (*ListTransfersResponse) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{14} + return file_spaces_spaces_proto_rawDescGZIP(), []int{15} } func (x *ListTransfersResponse) GetSpaces() []*Space { @@ -866,7 +948,7 @@ type MoveRequest struct { func (x *MoveRequest) Reset() { *x = MoveRequest{} if protoimpl.UnsafeEnabled { - mi := &file_spaces_spaces_proto_msgTypes[15] + mi := &file_spaces_spaces_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -879,7 +961,7 @@ func (x *MoveRequest) String() string { func (*MoveRequest) ProtoMessage() {} func (x *MoveRequest) ProtoReflect() protoreflect.Message { - mi := &file_spaces_spaces_proto_msgTypes[15] + mi := &file_spaces_spaces_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -892,7 +974,7 @@ func (x *MoveRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MoveRequest.ProtoReflect.Descriptor instead. func (*MoveRequest) Descriptor() ([]byte, []int) { - return file_spaces_spaces_proto_rawDescGZIP(), []int{15} + return file_spaces_spaces_proto_rawDescGZIP(), []int{16} } func (x *MoveRequest) GetSpaceId() string { @@ -916,135 +998,150 @@ var file_spaces_spaces_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xe9, 0x01, 0x0a, 0x05, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, - 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, - 0x67, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6f, 0x72, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x4f, 0x72, 0x67, 0x12, 0x2e, - 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xa3, 0x02, 0x0a, 0x05, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, + 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, + 0x72, 0x67, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6f, 0x72, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x4f, 0x72, 0x67, 0x12, + 0x2e, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x38, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9b, 0x01, 0x0a, 0x09, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x62, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x62, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x24, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x3c, 0x0a, + 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, + 0x0a, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, + 0x70, 0x61, 0x63, 0x65, 0x52, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x41, 0x0a, 0x0e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, + 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x24, - 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x05, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x22, 0x41, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, 0x27, + 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x3a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x07, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, 0x27, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x3a, - 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, - 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x24, 0x0a, 0x0b, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, 0x67, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, - 0x22, 0x3d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x06, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x22, - 0x3c, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x60, 0x0a, - 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, - 0x2e, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, - 0x2a, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x54, 0x0a, 0x0f, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x4f, 0x72, - 0x67, 0x22, 0x31, 0x0a, 0x14, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x05, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x22, 0x24, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x52, 0x06, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x60, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, + 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x2a, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x49, 0x64, 0x22, 0x2d, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, - 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, - 0x67, 0x49, 0x64, 0x22, 0x46, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x06, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x0b, 0x4d, - 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x2a, 0x70, 0x0a, 0x05, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x45, 0x57, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x52, - 0x45, 0x41, 0x44, 0x59, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x45, 0x50, 0x41, 0x52, - 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, - 0x41, 0x4e, 0x43, 0x45, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x49, 0x47, 0x52, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4e, - 0x47, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x07, 0x32, 0xe6, - 0x05, 0x0a, 0x06, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x06, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x06, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4d, - 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, + 0x63, 0x65, 0x49, 0x64, 0x22, 0x54, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, + 0x6f, 0x5f, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x4f, 0x72, 0x67, 0x22, 0x31, 0x0a, 0x14, 0x41, 0x62, + 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x2d, 0x0a, + 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x22, 0x46, 0x0a, 0x15, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x06, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x0b, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x15, + 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x6f, 0x72, 0x67, 0x49, 0x64, 0x2a, 0x70, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, + 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4e, + 0x45, 0x57, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x02, 0x12, + 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x45, 0x50, 0x41, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0f, + 0x0a, 0x0b, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x4d, 0x49, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0c, + 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x07, 0x32, 0xe6, 0x05, 0x0a, 0x06, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x73, 0x12, 0x49, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, + 0x03, 0x47, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x43, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x41, 0x0a, - 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x12, 0x1d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x08, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, - 0x12, 0x45, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0d, 0x41, 0x62, 0x6f, 0x72, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x25, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x04, 0x4d, 0x6f, 0x76, 0x65, - 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x2e, 0x70, - 0x65, 0x72, 0x78, 0x2e, 0x72, 0x75, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2f, 0x70, 0x65, - 0x72, 0x78, 0x69, 0x73, 0x2d, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x3b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x12, 0x4f, 0x0a, 0x0d, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x12, 0x24, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x73, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, + 0x00, 0x12, 0x5e, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x3d, 0x0a, 0x04, 0x4d, 0x6f, 0x76, 0x65, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, + 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x2e, 0x70, 0x65, 0x72, 0x78, 0x2e, 0x72, 0x75, 0x2f, + 0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2d, 0x67, 0x6f, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x3b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1060,62 +1157,67 @@ func file_spaces_spaces_proto_rawDescGZIP() []byte { } var file_spaces_spaces_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_spaces_spaces_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_spaces_spaces_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_spaces_spaces_proto_goTypes = []interface{}{ (State)(0), // 0: content.spaces.State (*Space)(nil), // 1: content.spaces.Space - (*Config)(nil), // 2: content.spaces.Config - (*CreateRequest)(nil), // 3: content.spaces.CreateRequest - (*CreateResponse)(nil), // 4: content.spaces.CreateResponse - (*GetRequest)(nil), // 5: content.spaces.GetRequest - (*GetResponse)(nil), // 6: content.spaces.GetResponse - (*ListRequest)(nil), // 7: content.spaces.ListRequest - (*ListResponse)(nil), // 8: content.spaces.ListResponse - (*UpdateRequest)(nil), // 9: content.spaces.UpdateRequest - (*UpdateConfigRequest)(nil), // 10: content.spaces.UpdateConfigRequest - (*DeleteRequest)(nil), // 11: content.spaces.DeleteRequest - (*TransferRequest)(nil), // 12: content.spaces.TransferRequest - (*AbortTransferRequest)(nil), // 13: content.spaces.AbortTransferRequest - (*ListTransfersRequest)(nil), // 14: content.spaces.ListTransfersRequest - (*ListTransfersResponse)(nil), // 15: content.spaces.ListTransfersResponse - (*MoveRequest)(nil), // 16: content.spaces.MoveRequest - (*emptypb.Empty)(nil), // 17: google.protobuf.Empty + (*StateInfo)(nil), // 2: content.spaces.StateInfo + (*Config)(nil), // 3: content.spaces.Config + (*CreateRequest)(nil), // 4: content.spaces.CreateRequest + (*CreateResponse)(nil), // 5: content.spaces.CreateResponse + (*GetRequest)(nil), // 6: content.spaces.GetRequest + (*GetResponse)(nil), // 7: content.spaces.GetResponse + (*ListRequest)(nil), // 8: content.spaces.ListRequest + (*ListResponse)(nil), // 9: content.spaces.ListResponse + (*UpdateRequest)(nil), // 10: content.spaces.UpdateRequest + (*UpdateConfigRequest)(nil), // 11: content.spaces.UpdateConfigRequest + (*DeleteRequest)(nil), // 12: content.spaces.DeleteRequest + (*TransferRequest)(nil), // 13: content.spaces.TransferRequest + (*AbortTransferRequest)(nil), // 14: content.spaces.AbortTransferRequest + (*ListTransfersRequest)(nil), // 15: content.spaces.ListTransfersRequest + (*ListTransfersResponse)(nil), // 16: content.spaces.ListTransfersResponse + (*MoveRequest)(nil), // 17: content.spaces.MoveRequest + (*timestamppb.Timestamp)(nil), // 18: google.protobuf.Timestamp + (*emptypb.Empty)(nil), // 19: google.protobuf.Empty } var file_spaces_spaces_proto_depIdxs = []int32{ 0, // 0: content.spaces.Space.state:type_name -> content.spaces.State - 2, // 1: content.spaces.Space.config:type_name -> content.spaces.Config - 1, // 2: content.spaces.CreateRequest.space:type_name -> content.spaces.Space - 1, // 3: content.spaces.CreateResponse.created:type_name -> content.spaces.Space - 1, // 4: content.spaces.GetResponse.space:type_name -> content.spaces.Space - 1, // 5: content.spaces.ListResponse.spaces:type_name -> content.spaces.Space - 1, // 6: content.spaces.UpdateRequest.space:type_name -> content.spaces.Space - 2, // 7: content.spaces.UpdateConfigRequest.config:type_name -> content.spaces.Config - 1, // 8: content.spaces.ListTransfersResponse.spaces:type_name -> content.spaces.Space - 3, // 9: content.spaces.Spaces.Create:input_type -> content.spaces.CreateRequest - 5, // 10: content.spaces.Spaces.Get:input_type -> content.spaces.GetRequest - 7, // 11: content.spaces.Spaces.List:input_type -> content.spaces.ListRequest - 9, // 12: content.spaces.Spaces.Update:input_type -> content.spaces.UpdateRequest - 10, // 13: content.spaces.Spaces.UpdateConfig:input_type -> content.spaces.UpdateConfigRequest - 11, // 14: content.spaces.Spaces.Delete:input_type -> content.spaces.DeleteRequest - 12, // 15: content.spaces.Spaces.Transfer:input_type -> content.spaces.TransferRequest - 13, // 16: content.spaces.Spaces.AbortTransfer:input_type -> content.spaces.AbortTransferRequest - 14, // 17: content.spaces.Spaces.ListTransfers:input_type -> content.spaces.ListTransfersRequest - 16, // 18: content.spaces.Spaces.Move:input_type -> content.spaces.MoveRequest - 4, // 19: content.spaces.Spaces.Create:output_type -> content.spaces.CreateResponse - 6, // 20: content.spaces.Spaces.Get:output_type -> content.spaces.GetResponse - 8, // 21: content.spaces.Spaces.List:output_type -> content.spaces.ListResponse - 17, // 22: content.spaces.Spaces.Update:output_type -> google.protobuf.Empty - 17, // 23: content.spaces.Spaces.UpdateConfig:output_type -> google.protobuf.Empty - 17, // 24: content.spaces.Spaces.Delete:output_type -> google.protobuf.Empty - 17, // 25: content.spaces.Spaces.Transfer:output_type -> google.protobuf.Empty - 17, // 26: content.spaces.Spaces.AbortTransfer:output_type -> google.protobuf.Empty - 15, // 27: content.spaces.Spaces.ListTransfers:output_type -> content.spaces.ListTransfersResponse - 17, // 28: content.spaces.Spaces.Move:output_type -> google.protobuf.Empty - 19, // [19:29] is the sub-list for method output_type - 9, // [9:19] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 3, // 1: content.spaces.Space.config:type_name -> content.spaces.Config + 2, // 2: content.spaces.Space.state_info:type_name -> content.spaces.StateInfo + 0, // 3: content.spaces.StateInfo.state:type_name -> content.spaces.State + 18, // 4: content.spaces.StateInfo.time:type_name -> google.protobuf.Timestamp + 1, // 5: content.spaces.CreateRequest.space:type_name -> content.spaces.Space + 1, // 6: content.spaces.CreateResponse.created:type_name -> content.spaces.Space + 1, // 7: content.spaces.GetResponse.space:type_name -> content.spaces.Space + 1, // 8: content.spaces.ListResponse.spaces:type_name -> content.spaces.Space + 1, // 9: content.spaces.UpdateRequest.space:type_name -> content.spaces.Space + 3, // 10: content.spaces.UpdateConfigRequest.config:type_name -> content.spaces.Config + 1, // 11: content.spaces.ListTransfersResponse.spaces:type_name -> content.spaces.Space + 4, // 12: content.spaces.Spaces.Create:input_type -> content.spaces.CreateRequest + 6, // 13: content.spaces.Spaces.Get:input_type -> content.spaces.GetRequest + 8, // 14: content.spaces.Spaces.List:input_type -> content.spaces.ListRequest + 10, // 15: content.spaces.Spaces.Update:input_type -> content.spaces.UpdateRequest + 11, // 16: content.spaces.Spaces.UpdateConfig:input_type -> content.spaces.UpdateConfigRequest + 12, // 17: content.spaces.Spaces.Delete:input_type -> content.spaces.DeleteRequest + 13, // 18: content.spaces.Spaces.Transfer:input_type -> content.spaces.TransferRequest + 14, // 19: content.spaces.Spaces.AbortTransfer:input_type -> content.spaces.AbortTransferRequest + 15, // 20: content.spaces.Spaces.ListTransfers:input_type -> content.spaces.ListTransfersRequest + 17, // 21: content.spaces.Spaces.Move:input_type -> content.spaces.MoveRequest + 5, // 22: content.spaces.Spaces.Create:output_type -> content.spaces.CreateResponse + 7, // 23: content.spaces.Spaces.Get:output_type -> content.spaces.GetResponse + 9, // 24: content.spaces.Spaces.List:output_type -> content.spaces.ListResponse + 19, // 25: content.spaces.Spaces.Update:output_type -> google.protobuf.Empty + 19, // 26: content.spaces.Spaces.UpdateConfig:output_type -> google.protobuf.Empty + 19, // 27: content.spaces.Spaces.Delete:output_type -> google.protobuf.Empty + 19, // 28: content.spaces.Spaces.Transfer:output_type -> google.protobuf.Empty + 19, // 29: content.spaces.Spaces.AbortTransfer:output_type -> google.protobuf.Empty + 16, // 30: content.spaces.Spaces.ListTransfers:output_type -> content.spaces.ListTransfersResponse + 19, // 31: content.spaces.Spaces.Move:output_type -> google.protobuf.Empty + 22, // [22:32] is the sub-list for method output_type + 12, // [12:22] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_spaces_spaces_proto_init() } @@ -1137,7 +1239,7 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Config); i { + switch v := v.(*StateInfo); i { case 0: return &v.state case 1: @@ -1149,7 +1251,7 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateRequest); i { + switch v := v.(*Config); i { case 0: return &v.state case 1: @@ -1161,7 +1263,7 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateResponse); i { + switch v := v.(*CreateRequest); i { case 0: return &v.state case 1: @@ -1173,7 +1275,7 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetRequest); i { + switch v := v.(*CreateResponse); i { case 0: return &v.state case 1: @@ -1185,7 +1287,7 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetResponse); i { + switch v := v.(*GetRequest); i { case 0: return &v.state case 1: @@ -1197,7 +1299,7 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListRequest); i { + switch v := v.(*GetResponse); i { case 0: return &v.state case 1: @@ -1209,7 +1311,7 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListResponse); i { + switch v := v.(*ListRequest); i { case 0: return &v.state case 1: @@ -1221,7 +1323,7 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateRequest); i { + switch v := v.(*ListResponse); i { case 0: return &v.state case 1: @@ -1233,7 +1335,7 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateConfigRequest); i { + switch v := v.(*UpdateRequest); i { case 0: return &v.state case 1: @@ -1245,7 +1347,7 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteRequest); i { + switch v := v.(*UpdateConfigRequest); i { case 0: return &v.state case 1: @@ -1257,7 +1359,7 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransferRequest); i { + switch v := v.(*DeleteRequest); i { case 0: return &v.state case 1: @@ -1269,7 +1371,7 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AbortTransferRequest); i { + switch v := v.(*TransferRequest); i { case 0: return &v.state case 1: @@ -1281,7 +1383,7 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTransfersRequest); i { + switch v := v.(*AbortTransferRequest); i { case 0: return &v.state case 1: @@ -1293,7 +1395,7 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTransfersResponse); i { + switch v := v.(*ListTransfersRequest); i { case 0: return &v.state case 1: @@ -1305,6 +1407,18 @@ func file_spaces_spaces_proto_init() { } } file_spaces_spaces_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTransfersResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spaces_spaces_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MoveRequest); i { case 0: return &v.state @@ -1323,7 +1437,7 @@ func file_spaces_spaces_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_spaces_spaces_proto_rawDesc, NumEnums: 1, - NumMessages: 16, + NumMessages: 17, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/spaces/spaces_grpc.pb.go b/proto/spaces/spaces_grpc.pb.go index 18aa43b307fd40ad17480082c2cc104dea50ed9c..f080fe31ba0c4d97ff3fa5fecbf608eaf2ccdd6d 100644 --- a/proto/spaces/spaces_grpc.pb.go +++ b/proto/spaces/spaces_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v4.24.3 +// - protoc v4.25.1 // source: spaces/spaces.proto package spaces