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 }