Files
kandev/apps/backend/internal/persistence/provider.go
T
Carlos Florêncio 8b8f8ff20b feat: refactor main, add providers (#46)
* feat: add providers

* feat: further refactor internal packages
2026-01-19 21:26:29 +00:00

43 lines
996 B
Go

package persistence
import (
"database/sql"
"fmt"
"os"
"go.uber.org/zap"
"github.com/kandev/kandev/internal/common/config"
"github.com/kandev/kandev/internal/common/logger"
"github.com/kandev/kandev/internal/db"
)
// Provide creates the database connection used by repositories.
func Provide(cfg *config.Config, log *logger.Logger) (*sql.DB, func() error, error) {
_ = cfg
driver := os.Getenv("KANDEV_DB_DRIVER")
if driver == "" {
driver = "sqlite"
}
dbPath := os.Getenv("KANDEV_DB_PATH")
if dbPath == "" {
dbPath = "./kandev.db"
}
switch driver {
case "sqlite":
dbConn, err := db.OpenSQLite(dbPath)
if err != nil {
return nil, nil, fmt.Errorf("failed to open sqlite database: %w", err)
}
if log != nil {
log.Info("Database initialized", zap.String("db_path", dbPath), zap.String("db_driver", driver))
}
return dbConn, func() error { return dbConn.Close() }, nil
default:
return nil, nil, fmt.Errorf("unsupported database driver: %s", driver)
}
}