MCPcopy Index your code
hub / github.com/dreamsofcode-io/zenstats / Connect

Function Connect

internal/database/database.go:65–98  ·  view source on GitHub ↗
(ctx context.Context, logger *slog.Logger, migrations fs.FS)

Source from the content-addressed store, hash-verified

63}
64
65func Connect(ctx context.Context, logger *slog.Logger, migrations fs.FS) (*pgxpool.Pool, error) {
66 config, err := loadConfig()
67 if err != nil {
68 return nil, err
69 }
70
71 conn, err := pgxpool.NewWithConfig(ctx, config)
72 if err != nil {
73 return nil, fmt.Errorf("could not connect to database: %w", err)
74 }
75
76 logger.Debug("Running migrations")
77
78 url, err := dbURL()
79 if err != nil {
80 return nil, err
81 }
82
83 source, err := iofs.New(migrations, "migrations")
84 if err != nil {
85 return nil, fmt.Errorf("create source: %w", err)
86 }
87
88 migrator, err := migrate.NewWithSourceInstance("iofs", source, url)
89 if err != nil {
90 return nil, fmt.Errorf("migrate new: %s", err)
91 }
92
93 if err := migrator.Up(); err != nil && !errors.Is(err, migrate.ErrNoChange) {
94 return nil, fmt.Errorf("failed to migrate database: %w", err)
95 }
96
97 return conn, nil
98}

Callers 1

StartMethod · 0.92

Calls 2

loadConfigFunction · 0.85
dbURLFunction · 0.85

Tested by

no test coverage detected