Skip to content

Commit 88f6d84

Browse files
feat: enhance pgdbtemplate-pgx docs
1 parent 73414ac commit 88f6d84

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

README.md

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ func main() {
5858
return fmt.Sprintf("postgres://user:pass@localhost/%s", dbName)
5959
}
6060
provider := pgdbtemplatepgx.NewConnectionProvider(connStringFunc)
61+
defer provider.Close() // Close all connection pools.
6162

6263
// Create migration runner.
6364
migrationRunner := pgdbtemplate.NewFileMigrationRunner(
@@ -114,22 +115,26 @@ import (
114115
)
115116

116117
var templateManager *pgdbtemplate.TemplateManager
118+
var provider *pgdbtemplatepgx.ConnectionProvider
117119

118120
func TestMain(m *testing.M) {
119121
// Setup template manager once.
120-
if err := setupPgxTemplateManager(); err != nil {
122+
ctx := context.Background()
123+
if err := setupPgxTemplateManager(ctx); err != nil {
121124
log.Fatalf("failed to setup template manager: %v", err)
122125
}
123126

124127
// Run tests.
125128
code := m.Run()
126129

127130
// Cleanup.
128-
templateManager.Cleanup(context.Background())
131+
templateManager.Cleanup(ctx)
132+
provider.Close()
133+
129134
os.Exit(code)
130135
}
131136

132-
func setupPgxTemplateManager() error {
137+
func setupPgxTemplateManager(ctx context.Context) error {
133138
baseConnString := "postgres://postgres:password@localhost:5432/postgres?sslmode=disable"
134139

135140
// Create pgx connection provider with connection pooling.
@@ -138,7 +143,7 @@ func setupPgxTemplateManager() error {
138143
}
139144

140145
// Configure connection pool settings using options.
141-
provider := pgdbtemplatepgx.NewConnectionProvider(
146+
provider = pgdbtemplatepgx.NewConnectionProvider(
142147
connStringFunc,
143148
pgdbtemplatepgx.WithMaxConns(10),
144149
pgdbtemplatepgx.WithMinConns(2),
@@ -156,13 +161,14 @@ func setupPgxTemplateManager() error {
156161
MigrationRunner: migrationRunner,
157162
}
158163

164+
var err error
159165
templateManager, err = pgdbtemplate.NewTemplateManager(config)
160166
if err != nil {
161167
return fmt.Errorf("failed to create template manager: %w", err)
162168
}
163169

164170
// Initialize template database with migrations.
165-
if err := templateManager.Initialize(context.Background()); err != nil {
171+
if err = templateManager.Initialize(ctx); err != nil {
166172
return fmt.Errorf("failed to initialize template: %w", err)
167173
}
168174
return nil
@@ -232,16 +238,20 @@ func TestMain(m *testing.M) {
232238
if err := setupPostgresContainer(ctx); err != nil {
233239
log.Fatalf("failed to setup postgres container: %v", err)
234240
}
235-
defer pgContainer.Terminate(ctx)
236241

237242
// Setup template manager.
238243
if err := setupTemplateManagerWithContainer(ctx); err != nil {
239244
log.Fatalf("failed to setup template manager: %v", err)
240245
}
241-
defer templateManager.Cleanup(ctx)
242246

243247
// Run tests.
244-
m.Run()
248+
code := m.Run()
249+
250+
// Cleanup.
251+
templateManager.Cleanup(ctx)
252+
pgContainer.Terminate(ctx)
253+
254+
os.Exit(code)
245255
}
246256

247257
func setupPostgresContainer(ctx context.Context) error {

0 commit comments

Comments
 (0)