// Copyright (C) 2024 Declan Teevan // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . package storage import ( "context" "time" "github.com/jackc/pgx/v5/pgxpool" "github.com/hexolan/stocklet/internal/pkg/config" "github.com/hexolan/stocklet/internal/pkg/errors" ) func NewPostgresConn(conf *config.PostgresConfig) (*pgxpool.Pool, error) { ctx, cancel := context.WithTimeout(context.Background(), time.Second*45) defer cancel() pCl, err := pgxpool.New(ctx, conf.GetDSN()) if err != nil { return nil, errors.WrapServiceError(errors.ErrCodeExtService, "failed to connect to postgres", err) } return pCl, nil }