github.com/blend/go-sdk@v1.20240719.1/testutil/create_test_database.go (about)

     1  /*
     2  
     3  Copyright (c) 2024 - Present. Blend Labs, Inc. All rights reserved
     4  Use of this source code is governed by a MIT license that can be found in the LICENSE file.
     5  
     6  */
     7  
     8  package testutil
     9  
    10  import (
    11  	"context"
    12  	"fmt"
    13  
    14  	"github.com/blend/go-sdk/db"
    15  	"github.com/blend/go-sdk/db/dbutil"
    16  	"github.com/blend/go-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  }