Documentation
¶
Index ¶
- Constants
- func AddressEscape(in ...string) string
- func ClusterStatementToList(clusterStatement string) []string
- func EscapeSnowflakeString(in string) string
- func EscapeString(in string) string
- func FlattenTablePrimaryKey(pkds []primaryKeyDescription) []interface{}
- func GeneratePipeSQL(pipe Pipe) string
- func GenerateProvider(outputDir string) error
- func GenerateStage(stage Stage) []byte
- func GenerateTFImport(res TFResource) string
- func GenerateTable(table TableB) []byte
- func GenerateUser(user User) []byte
- func JoinStringList(instrings []string, delimiter string) string
- func JoinToLower(sep string, terms ...string) string
- func PipeID(pipe Pipe) string
- func PipeSQLFilePath(pipe Pipe) string
- func Query(db *sql.DB, stmt string) (*sqlx.Rows, error)
- func ScanPrimaryKeyDescription(rows *sqlx.Rows) ([]primaryKeyDescription, error)
- func ScanTable(row *sqlx.Row) (*table, error)
- func ScanTableDescription(rows *sqlx.Rows) ([]tableDescription, error)
- func SetAttributeIfNotEmpty(body *hclwrite.Body, k, v string)
- func StageID(stage Stage) string
- func TableFilePath(t TableB) string
- func TableID(t TableB) string
- func UnescapeSnowflakeString(in string) string
- func UnescapeString(in string) string
- type Column
- type ColumnDefault
- type ColumnDefaultType
- type Columns
- type Database
- type Pipe
- type PrimaryKey
- type Role
- type Schema
- type Stage
- type TFResource
- type TableB
- type TableBuilder
- type User
- type View
- type Warehouse
Constants ¶
const SnowflakeDatabase = "snowflake_database"
const SnowflakePipe = "snowflake_pipe"
const SnowflakeRole = "snowflake_role"
const SnowflakeSchema = "snowflake_schema"
const SnowflakeStage = "snowflake_stage"
const SnowflakeTable = "snowflake_table"
const SnowflakeUser = "snowflake_user"
const SnowflakeView = "snowflake_view"
const SnowflakeWarehouse = "snowflake_warehouse"
Variables ¶
This section is empty.
Functions ¶
func AddressEscape ¶
AddressEscape wraps a name inside double quotes only if required by Snowflake
func ClusterStatementToList ¶
function to take the literal snowflake cluster statement returned from SHOW TABLES and convert it to a list of keys.
func EscapeSnowflakeString ¶
EscapeSnowflakeString will escape single quotes with the SQL native double single quote
func EscapeString ¶
EscapeString will escape only the ' character. Would prefer a more robust OSS solution, but this should prevent some dumb errors for now.
func FlattenTablePrimaryKey ¶
func FlattenTablePrimaryKey(pkds []primaryKeyDescription) []interface{}
func GeneratePipeSQL ¶
func GenerateProvider ¶
func GenerateStage ¶
func GenerateTFImport ¶
func GenerateTFImport(res TFResource) string
func GenerateTable ¶
func GenerateUser ¶
func JoinStringList ¶
func JoinToLower ¶
func PipeSQLFilePath ¶
func Query ¶
Query will run stmt against the db and return the rows. We use [DB.Unsafe](https://godoc.org/github.com/jmoiron/sqlx#DB.Unsafe) so that we can scan to structs without worrying about newly introduced columns
func ScanTableDescription ¶
func SetAttributeIfNotEmpty ¶
func TableFilePath ¶
func UnescapeSnowflakeString ¶
UnescapeSnowflakeString reverses EscapeSnowflakeString
Types ¶
type Column ¶
type Column struct {
// contains filtered or unexported fields
}
Column structure that represents a table column
type ColumnDefault ¶
type ColumnDefault struct {
// contains filtered or unexported fields
}
func NewColumnDefaultWithConstant ¶
func NewColumnDefaultWithConstant(constant string) *ColumnDefault
func NewColumnDefaultWithExpression ¶
func NewColumnDefaultWithExpression(expression string) *ColumnDefault
func NewColumnDefaultWithSequence ¶
func NewColumnDefaultWithSequence(sequence string) *ColumnDefault
func (*ColumnDefault) String ¶
func (d *ColumnDefault) String(columnType string) string
func (*ColumnDefault) UnescapeConstantSnowflakeString ¶
func (d *ColumnDefault) UnescapeConstantSnowflakeString(columnType string) string
type ColumnDefaultType ¶
type ColumnDefaultType int
type Columns ¶
type Columns []Column
func NewColumns ¶
func NewColumns(tds []tableDescription) Columns
NewColumns generates columns from a table description
type Database ¶
type Database struct { CreatedOn sql.NullString `db:"created_on"` DBName sql.NullString `db:"name"` IsDefault sql.NullString `db:"is_default"` IsCurrent sql.NullString `db:"is_current"` Origin sql.NullString `db:"origin"` Owner sql.NullString `db:"owner"` Comment sql.NullString `db:"comment"` Options sql.NullString `db:"options"` RetentionTime sql.NullString `db:"retention_time"` }
func (Database) ResourceName ¶
type Pipe ¶
type Pipe struct { Createdon string `db:"created_on"` Name string `db:"name"` DatabaseName string `db:"database_name"` SchemaName string `db:"schema_name"` Definition string `db:"definition"` Owner string `db:"owner"` Comment string `db:"comment"` NotificationChannel sql.NullString `db:"notification_channel"` Integration sql.NullString `db:"integration"` ErrorIntegration sql.NullString `db:"error_integration"` }
func (Pipe) ResourceName ¶
type PrimaryKey ¶
type PrimaryKey struct {
// contains filtered or unexported fields
}
PrimaryKey structure that represents a tables primary key
func (*PrimaryKey) WithKeys ¶
func (pk *PrimaryKey) WithKeys(keys []string) *PrimaryKey
WithKeys set the primary key keys
func (*PrimaryKey) WithName ¶
func (pk *PrimaryKey) WithName(name string) *PrimaryKey
WithName set the primary key name
type Role ¶
type Role struct { Name sql.NullString `db:"name"` Comment sql.NullString `db:"comment"` }
func (Role) ResourceName ¶
type Schema ¶
type Schema struct { Name sql.NullString `db:"name"` DatabaseName sql.NullString `db:"database_name"` Comment sql.NullString `db:"comment"` Options sql.NullString `db:"options"` RetentionTime sql.NullString `db:"retention_time"` }
func (Schema) ResourceName ¶
type Stage ¶
type Stage struct { Name sql.NullString `db:"name"` DatabaseName sql.NullString `db:"database_name"` SchemaName sql.NullString `db:"schema_name"` Comment sql.NullString `db:"comment"` URL sql.NullString `db:"url"` StorageIntegration sql.NullString `db:"storage_integration"` NotificationChannel sql.NullString `db:"notification_channel"` }
func ListStages ¶
func (Stage) ResourceName ¶
type TFResource ¶
type TableB ¶
type TableB struct { CreatedOn sql.NullString `db:"created_on"` Name sql.NullString `db:"name"` DatabaseName sql.NullString `db:"database_name"` SchemaName sql.NullString `db:"schema_name"` Kind sql.NullString `db:"kind"` Comment sql.NullString `db:"comment"` ClusterBy sql.NullString `db:"cluster_by"` Rows sql.NullString `db:"row"` Bytes sql.NullString `db:"bytes"` Owner sql.NullString `db:"owner"` RetentionTime sql.NullString `db:"retention_time"` AutomaticClustering sql.NullString `db:"automatic_clustering"` ChangeTracking sql.NullString `db:"change_tracking"` Columns Columns `db:"-"` }
func ListTables ¶
func (TableB) ResourceName ¶
type TableBuilder ¶
type TableBuilder struct {
// contains filtered or unexported fields
}
TableBuilder abstracts the creation of SQL queries for a Snowflake schema
func Table ¶
func Table(name, db, schema string) *TableBuilder
Table returns a pointer to a Builder that abstracts the DDL operations for a table.
Supported DDL operations are:
- ALTER TABLE
- DROP TABLE
- SHOW TABLES
[Snowflake Reference](https://docs.snowflake.com/en/sql-reference/ddl-table.html)
func TableWithColumnDefinitions ¶
func TableWithColumnDefinitions(name, db, schema string, columns Columns) *TableBuilder
Table returns a pointer to a Builder that abstracts the DDL operations for a table.
Supported DDL operations are:
- CREATE TABLE
[Snowflake Reference](https://docs.snowflake.com/en/sql-reference/ddl-table.html)
func (*TableBuilder) GetClusterKeyString ¶
func (tb *TableBuilder) GetClusterKeyString() string
Function to get clustering definition
func (*TableBuilder) QualifiedName ¶
func (tb *TableBuilder) QualifiedName() string
QualifiedName prepends the db and schema if set and escapes everything nicely
func (*TableBuilder) Show ¶
func (tb *TableBuilder) Show() string
Show returns the SQL query that will show a table.
func (*TableBuilder) ShowColumns ¶
func (tb *TableBuilder) ShowColumns() string
func (*TableBuilder) ShowPrimaryKeys ¶
func (tb *TableBuilder) ShowPrimaryKeys() string
type User ¶
type User struct { Name sql.NullString `db:"name"` CreatedOn sql.NullString `db:"created_on"` LoginName sql.NullString `db:"login_name"` DisplayName sql.NullString `db:"display_name"` FirstName sql.NullString `db:"first_name"` LastName sql.NullString `db:"last_name"` Email sql.NullString `db:"email"` MinsToUnlock sql.NullString `db:"mins_to_unlock"` DaysToExpiry sql.NullString `db:"days_to_expiry"` Comment sql.NullString `db:"comment"` Disabled sql.NullBool `db:"disabled"` MustChangePassword sql.NullBool `db:"must_change_password"` SnowflakeLock sql.NullString `db:"snowflake_lock"` DefaultWarehouse sql.NullString `db:"default_warehouse"` DefaultNamespace sql.NullString `db:"default_namespace"` DefaultRole sql.NullString `db:"default_role"` ExtAuthnDuo sql.NullString `db:"ext_authn_duo"` ExtAuthnUID sql.NullString `db:"ext_authn_uid"` MinsToBypassMFA sql.NullString `db:"mins_to_bypass_mfa"` Owner sql.NullString `db:"owner"` LastSuccessLogin sql.NullString `db:"last_success_login"` ExpiresAtTime sql.NullString `db:"expires_at_time"` LockedUntilTime sql.NullString `db:"locked_until_time"` HasPassword sql.NullString `db:"has_password"` }
func (User) ResourceName ¶
type View ¶
type View struct { Comment sql.NullString `db:"comment"` IsSecure bool `db:"is_secure"` Name sql.NullString `db:"name"` SchemaName sql.NullString `db:"schema_name"` Text sql.NullString `db:"text"` DatabaseName sql.NullString `db:"database_name"` }
func (View) ResourceName ¶
type Warehouse ¶
type Warehouse struct { Name string AutoResume bool AutoSuspend int Comment string // WID string InitiallySuspended bool MaxClusterCount int MaxConcurrencyLevel int MinClusterCount int ResourceMonitor string ScalingPolicy string StatementQueuedTimeoutInSeconds int StatementTimeoutInSeconds int WaitForProvisioning bool Size string }