diff options
| author | 2025-05-22 16:27:55 +0200 | |
|---|---|---|
| committer | 2025-05-22 16:27:55 +0200 | |
| commit | b6ff55662e0281c0d6e111f9307625ef695df2fa (patch) | |
| tree | 5f7761efa0b51a7a7d56f96fce3681c8e9b66fe9 /vendor/github.com/minio/minio-go/v7/pkg/kvcache/cache.go | |
| parent | [chore/woodpecker] don't make `test` depend on `lint` (#4189) (diff) | |
| download | gotosocial-b6ff55662e0281c0d6e111f9307625ef695df2fa.tar.xz | |
[chore] update dependencies (#4188)
Update dependencies:
- github.com/gin-gonic/gin v1.10.0 -> v1.10.1
- github.com/gin-contrib/sessions v1.10.3 -> v1.10.4
- github.com/jackc/pgx/v5 v5.7.4 -> v5.7.5
- github.com/minio/minio-go/v7 v7.0.91 -> v7.0.92
- github.com/pquerna/otp v1.4.0 -> v1.5.0
- github.com/tdewolff/minify/v2 v2.23.5 -> v2.23.8
- github.com/yuin/goldmark v1.7.11 -> v1.7.12
- go.opentelemetry.io/otel{,/*} v1.35.0 -> v1.36.0
- modernc.org/sqlite v1.37.0 -> v1.37.1
Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4188
Reviewed-by: Daenney <daenney@noreply.codeberg.org>
Co-authored-by: kim <grufwub@gmail.com>
Co-committed-by: kim <grufwub@gmail.com>
Diffstat (limited to 'vendor/github.com/minio/minio-go/v7/pkg/kvcache/cache.go')
| -rw-r--r-- | vendor/github.com/minio/minio-go/v7/pkg/kvcache/cache.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/vendor/github.com/minio/minio-go/v7/pkg/kvcache/cache.go b/vendor/github.com/minio/minio-go/v7/pkg/kvcache/cache.go new file mode 100644 index 000000000..b37514fa3 --- /dev/null +++ b/vendor/github.com/minio/minio-go/v7/pkg/kvcache/cache.go @@ -0,0 +1,54 @@ +/* + * MinIO Go Library for Amazon S3 Compatible Cloud Storage + * Copyright 2015-2025 MinIO, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package kvcache + +import "sync" + +// Cache - Provides simple mechanism to hold any key value in memory +// wrapped around via sync.Map but typed with generics. +type Cache[K comparable, V any] struct { + m sync.Map +} + +// Delete delete the key +func (r *Cache[K, V]) Delete(key K) { + r.m.Delete(key) +} + +// Get - Returns a value of a given key if it exists. +func (r *Cache[K, V]) Get(key K) (value V, ok bool) { + return r.load(key) +} + +// Set - Will persist a value into cache. +func (r *Cache[K, V]) Set(key K, value V) { + r.store(key, value) +} + +func (r *Cache[K, V]) load(key K) (V, bool) { + value, ok := r.m.Load(key) + if !ok { + var zero V + return zero, false + } + return value.(V), true +} + +func (r *Cache[K, V]) store(key K, value V) { + r.m.Store(key, value) +} |
