/
githubmirror
/
sqlc
Обзор
Документация
Войти
/
githubmirror
/
sqlc
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
internal/pgx/poolcache/poolcache.go
61 строка
860 B
Kyle Gray
feat: Managed databases with any accessible server (#3421)
06 июн 2024, 00:36
Не верифицирован
06 июн 2024, 00:36
757187c
Код
Авторство
О чём код?
package poolcache import ( "context" "fmt" "sync" "github.com/jackc/pgx/v5/pgxpool" ) type Cache struct { lock sync.RWMutex closed bool pools map[string]*pgxpool.Pool } func New() *Cache { return &Cache{ pools: map[string]*pgxpool.Pool{}, } } func (c *Cache) Open(ctx context.Context, uri string) (*pgxpool.Pool, error) { if c.closed { return nil, fmt.Errorf("poolcache is closed") } c.lock.RLock() existing, found := c.pools[uri] c.lock.RUnlock() if found { return existing, nil } pool, err := pgxpool.New(ctx, uri) if err != nil { return nil, err } c.lock.Lock() c.pools[uri] = pool c.lock.Unlock() return pool, nil } func (c *Cache) Close() error { c.lock.Lock() defer c.lock.Unlock() var closeErr error for _, pool := range c.pools { pool.Close() } c.closed = true clear(c.pools) return closeErr }