snowflake

package
v0.0.0-...-5678ca5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 26, 2022 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const SnowflakeDatabase = "snowflake_database"
View Source
const SnowflakePipe = "snowflake_pipe"
View Source
const SnowflakeRole = "snowflake_role"
View Source
const SnowflakeSchema = "snowflake_schema"
View Source
const SnowflakeStage = "snowflake_stage"
View Source
const SnowflakeTable = "snowflake_table"
View Source
const SnowflakeUser = "snowflake_user"
View Source
const SnowflakeView = "snowflake_view"
View Source
const SnowflakeWarehouse = "snowflake_warehouse"

Variables

This section is empty.

Functions

func AddressEscape

func AddressEscape(in ...string) string

AddressEscape wraps a name inside double quotes only if required by Snowflake

func ClusterStatementToList

func ClusterStatementToList(clusterStatement string) []string

function to take the literal snowflake cluster statement returned from SHOW TABLES and convert it to a list of keys.

func EscapeSnowflakeString

func EscapeSnowflakeString(in string) string

EscapeSnowflakeString will escape single quotes with the SQL native double single quote

func EscapeString

func EscapeString(in string) string

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 GeneratePipeSQL(pipe Pipe) string

func GenerateProvider

func GenerateProvider(outputDir string) error

func GenerateStage

func GenerateStage(stage Stage) []byte

func GenerateTFImport

func GenerateTFImport(res TFResource) string

func GenerateTable

func GenerateTable(table TableB) []byte

func GenerateUser

func GenerateUser(user User) []byte

func JoinStringList

func JoinStringList(instrings []string, delimiter string) string

func JoinToLower

func JoinToLower(sep string, terms ...string) string

func PipeID

func PipeID(pipe Pipe) string

func PipeSQLFilePath

func PipeSQLFilePath(pipe Pipe) string

func Query

func Query(db *sql.DB, stmt string) (*sqlx.Rows, error)

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 ScanPrimaryKeyDescription

func ScanPrimaryKeyDescription(rows *sqlx.Rows) ([]primaryKeyDescription, error)

func ScanTable

func ScanTable(row *sqlx.Row) (*table, error)

func ScanTableDescription

func ScanTableDescription(rows *sqlx.Rows) ([]tableDescription, error)

func SetAttributeIfNotEmpty

func SetAttributeIfNotEmpty(body *hclwrite.Body, k, v string)

func StageID

func StageID(stage Stage) string

func TableFilePath

func TableFilePath(t TableB) string

func TableID

func TableID(t TableB) string

func UnescapeSnowflakeString

func UnescapeSnowflakeString(in string) string

UnescapeSnowflakeString reverses EscapeSnowflakeString

func UnescapeString

func UnescapeString(in string) string

UnescapeString reverses EscapeString

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 ListColumns

func ListColumns(table TableB, db *sql.DB) (Columns, error)

func NewColumns

func NewColumns(tds []tableDescription) Columns

NewColumns generates columns from a table description

func (Columns) Flatten

func (c Columns) Flatten() []interface{}

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 ListDatabases

func ListDatabases(sdb *sqlx.DB) ([]Database, error)

func (Database) Address

func (db Database) Address() string

func (Database) HCL

func (db Database) HCL() []byte

func (Database) ID

func (db Database) ID() string

func (Database) ResourceName

func (db Database) ResourceName() string

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 ListPipes

func ListPipes(databaseName string, schemaName string, db *sql.DB) ([]Pipe, error)

func (Pipe) Address

func (p Pipe) Address() string

func (Pipe) HCL

func (p Pipe) HCL() []byte

func (Pipe) ID

func (p Pipe) ID() string

func (Pipe) ResourceName

func (p Pipe) ResourceName() string

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 ListRoles

func ListRoles(db *sql.DB) ([]Role, error)

func (Role) Address

func (r Role) Address() string

func (Role) HCL

func (r Role) HCL() []byte

func (Role) ID

func (r Role) ID() string

func (Role) ResourceName

func (r Role) ResourceName() string

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 ListSchemas

func ListSchemas(databaseName string, db *sql.DB) ([]Schema, error)

func (Schema) Address

func (s Schema) Address() string

func (Schema) HCL

func (s Schema) HCL() []byte

func (Schema) ID

func (s Schema) ID() string

func (Schema) ResourceName

func (s Schema) ResourceName() string

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 ListStages(databaseName string, schemaName string, db *sql.DB) ([]Stage, error)

func (Stage) Address

func (s Stage) Address() string

func (Stage) HCL

func (s Stage) HCL() []byte

func (Stage) ID

func (s Stage) ID() string

func (Stage) ResourceName

func (s Stage) ResourceName() string

type TFResource

type TFResource interface {
	Address() string // Example: snowflake_schema.example

	ResourceName() string // ResourceName is the name of a resource
	ID() string           // ID is the unique ID representing a resource
	HCL() []byte          // HCL generates the Hashicorp Configuration Language of a resource
}

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 ListTables(databaseName string, schemaName string, db *sql.DB) ([]TableB, error)

func (TableB) Address

func (t TableB) Address() string

func (TableB) HCL

func (t TableB) HCL() []byte

func (TableB) ID

func (t TableB) ID() string

func (TableB) ResourceName

func (t TableB) ResourceName() string

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 ListUsers

func ListUsers(db *sql.DB) ([]User, error)

func (User) Address

func (u User) Address() string

func (User) HCL

func (u User) HCL() []byte

func (User) ID

func (u User) ID() string

func (User) ResourceName

func (u User) ResourceName() string

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 ListViews

func ListViews(databaseName string, schemaName string, db *sql.DB) ([]View, error)

func (View) Address

func (v View) Address() string

func (View) HCL

func (v View) HCL() []byte

func (View) ID

func (v View) ID() string

func (View) ResourceName

func (v View) ResourceName() string

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
}

func ListWarehouses

func ListWarehouses(db *sql.DB) ([]Warehouse, error)

func (Warehouse) Address

func (w Warehouse) Address() string

func (Warehouse) HCL

func (w Warehouse) HCL() []byte

func (Warehouse) ID

func (w Warehouse) ID() string

func (Warehouse) ResourceName

func (w Warehouse) ResourceName() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL