github.com/snowflakedb/gosnowflake@v1.9.0/connector.go (about)

     1  // Copyright (c) 2020-2022 Snowflake Computing Inc. All rights reserved.
     2  
     3  package gosnowflake
     4  
     5  import (
     6  	"context"
     7  	"database/sql/driver"
     8  )
     9  
    10  // InternalSnowflakeDriver is the interface for an internal Snowflake driver
    11  type InternalSnowflakeDriver interface {
    12  	Open(dsn string) (driver.Conn, error)
    13  	OpenWithConfig(ctx context.Context, config Config) (driver.Conn, error)
    14  }
    15  
    16  // Connector creates Driver with the specified Config
    17  type Connector struct {
    18  	driver InternalSnowflakeDriver
    19  	cfg    Config
    20  }
    21  
    22  // NewConnector creates a new connector with the given SnowflakeDriver and Config.
    23  func NewConnector(driver InternalSnowflakeDriver, config Config) Connector {
    24  	return Connector{driver, config}
    25  }
    26  
    27  // Connect creates a new connection.
    28  func (t Connector) Connect(ctx context.Context) (driver.Conn, error) {
    29  	cfg := t.cfg
    30  	err := fillMissingConfigParameters(&cfg)
    31  	if err != nil {
    32  		return nil, err
    33  	}
    34  	return t.driver.OpenWithConfig(ctx, cfg)
    35  }
    36  
    37  // Driver creates a new driver.
    38  func (t Connector) Driver() driver.Driver {
    39  	return t.driver
    40  }