go.charczuk.com@v0.0.0-20240327042549-bc490516bd1a/sdk/testutil/create_test_database.go (about) 1 /* 2 3 Copyright (c) 2023 - Present. Will Charczuk. All rights reserved. 4 Use of this source code is governed by a MIT license that can be found in the LICENSE file at the root of the repository. 5 6 */ 7 8 package testutil 9 10 import ( 11 "context" 12 "fmt" 13 14 "go.charczuk.com/sdk/db" 15 "go.charczuk.com/sdk/db/dbutil" 16 "go.charczuk.com/sdk/uuid" 17 ) 18 19 // CreateTestDatabase creates a randomized test database. 20 func CreateTestDatabase(ctx context.Context, opts ...db.Option) (*db.Connection, error) { 21 databaseName := fmt.Sprintf("testdb_%s", uuid.V4().String()) 22 if err := dbutil.CreateDatabase(ctx, databaseName, opts...); err != nil { 23 return nil, err 24 } 25 26 defaults := []db.Option{ 27 db.OptHost("localhost"), 28 db.OptSSLMode("disable"), 29 db.OptConfigFromEnv(), 30 db.OptDatabase(databaseName), 31 db.OptDialect(db.DialectPostgres), 32 } 33 conn, err := db.New( 34 append(defaults, opts...)..., 35 ) 36 if err != nil { 37 return nil, err 38 } 39 err = conn.Open() 40 if err != nil { 41 return nil, err 42 } 43 return conn, nil 44 }