Skip to content

Commit

Permalink
feat: add procedures to sdkv2 (#2202)
Browse files Browse the repository at this point in the history
* add procedures to sdkv2

* update

* update procedures

* fmt

* update proc

* update comments
  • Loading branch information
sfc-gh-swinkler authored Dec 8, 2023
1 parent c7bc9fa commit 6b563ac
Show file tree
Hide file tree
Showing 20 changed files with 3,076 additions and 14 deletions.
5 changes: 3 additions & 2 deletions pkg/resources/schema_acceptance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@ import (
"context"
"database/sql"
"fmt"
"strings"
"testing"

"github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/sdk"
"github.com/hashicorp/terraform-plugin-testing/helper/acctest"
"github.com/hashicorp/terraform-plugin-testing/terraform"
"strings"
"testing"

acc "github.com/Snowflake-Labs/terraform-provider-snowflake/pkg/acceptance"
"github.com/hashicorp/terraform-plugin-testing/config"
Expand Down
4 changes: 2 additions & 2 deletions pkg/resources/testdata/TestAcc_Schema/test.tf
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
resource "snowflake_schema" "test" {
name = var.name
name = var.name
database = var.database
comment = var.comment
comment = var.comment
}
4 changes: 2 additions & 2 deletions pkg/resources/testdata/TestAcc_Schema_Rename/test.tf
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
resource "snowflake_schema" "test" {
name = var.name
name = var.name
database = var.database
comment = var.comment
comment = var.comment
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
resource "snowflake_schema" "test" {
name = var.name
name = var.name
database = var.database
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
resource "snowflake_schema" "test" {
name = var.name
name = var.name
database = var.database
}

Expand All @@ -8,6 +8,6 @@ resource "snowflake_database" "test" {
}

resource "snowflake_schema" "test_2" {
name = var.name
name = var.name
database = snowflake_database.test.name
}
2 changes: 2 additions & 0 deletions pkg/sdk/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ type Client struct {
Parameters Parameters
PasswordPolicies PasswordPolicies
Pipes Pipes
Procedures Procedures
ResourceMonitors ResourceMonitors
Roles Roles
Schemas Schemas
Expand Down Expand Up @@ -174,6 +175,7 @@ func (c *Client) initialize() {
c.Parameters = &parameters{client: c}
c.PasswordPolicies = &passwordPolicies{client: c}
c.Pipes = &pipes{client: c}
c.Procedures = &procedures{client: c}
c.ReplicationFunctions = &replicationFunctions{client: c}
c.ResourceMonitors = &resourceMonitors{client: c}
c.Roles = &roles{client: c}
Expand Down
28 changes: 28 additions & 0 deletions pkg/sdk/common_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,3 +148,31 @@ func (row *propertyRow) toBoolProperty() *BoolProperty {
Description: row.Description,
}
}

type ExecuteAs string

func ExecuteAsPointer(v ExecuteAs) *ExecuteAs {
return &v
}

const (
ExecuteAsCaller ExecuteAs = "EXECUTE AS CALLER"
ExecuteAsOwner ExecuteAs = "EXECUTE AS OWNER"
)

type NullInputBehavior string

func NullInputBehaviorPointer(v NullInputBehavior) *NullInputBehavior {
return &v
}

const (
NullInputBehaviorCalledOnNullInput NullInputBehavior = "CALLED ON NULL INPUT"
NullInputBehaviorReturnNullInput NullInputBehavior = "RETURN NULL ON NULL INPUT"
NullInputBehaviorStrict NullInputBehavior = "STRICT"
)

type Secret struct {
VariableName string `ddl:"keyword,single_quotes"`
Name string `ddl:"parameter,no_quotes"`
}
5 changes: 5 additions & 0 deletions pkg/sdk/poc/generator/field_transformers.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@ func (v *ParameterTransformer) NoQuotes() *ParameterTransformer {
return v
}

func (v *ListTransformer) MustParentheses() *ListTransformer {
v.parentheses = "must_parentheses"
return v
}

func (v *ParameterTransformer) NoEquals() *ParameterTransformer {
v.equals = "no_equals"
return v
Expand Down
4 changes: 2 additions & 2 deletions pkg/sdk/poc/generator/keyword_builders.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ func (v *QueryStruct) SetTags() *QueryStruct {
}

func (v *QueryStruct) OptionalSetTags() *QueryStruct {
return v.setTags(nil)
return v.setTags(KeywordOptions().SQL("SET TAG"))
}

func (v *QueryStruct) setTags(transformer *KeywordTransformer) *QueryStruct {
Expand All @@ -91,7 +91,7 @@ func (v *QueryStruct) UnsetTags() *QueryStruct {
}

func (v *QueryStruct) OptionalUnsetTags() *QueryStruct {
return v.unsetTags(nil)
return v.unsetTags(KeywordOptions().SQL("UNSET TAG"))
}

func (v *QueryStruct) unsetTags(transformer *KeywordTransformer) *QueryStruct {
Expand Down
7 changes: 7 additions & 0 deletions pkg/sdk/poc/generator/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ const (
ExactlyOneValueSet
AtLeastOneValueSet
ValidateValue
ValidateValueSet
)

type Validation struct {
Expand Down Expand Up @@ -64,6 +65,8 @@ func (v *Validation) Condition(field *Field) string {
return fmt.Sprintf("!exactlyOneValueSet(%s)", strings.Join(v.fieldsWithPath(field), ","))
case AtLeastOneValueSet:
return fmt.Sprintf("!anyValueSet(%s)", strings.Join(v.fieldsWithPath(field), ","))
case ValidateValueSet:
return fmt.Sprintf("!valueSet(%s)", strings.Join(v.fieldsWithPath(field), ","))
case ValidateValue:
return fmt.Sprintf("err := %s.validate(); err != nil", strings.Join(v.fieldsWithPath(field.Parent), ","))
}
Expand All @@ -82,6 +85,8 @@ func (v *Validation) ReturnedError(field *Field) string {
return fmt.Sprintf(`errExactlyOneOf("%s", %s)`, field.PathWithRoot(), strings.Join(v.paramsQuoted(), ","))
case AtLeastOneValueSet:
return fmt.Sprintf(`errAtLeastOneOf("%s", %s)`, field.PathWithRoot(), strings.Join(v.paramsQuoted(), ","))
case ValidateValueSet:
return fmt.Sprintf(`errNotSet("%s", %s)`, field.PathWithRoot(), strings.Join(v.paramsQuoted(), ","))
case ValidateValue:
return "err"
}
Expand All @@ -100,6 +105,8 @@ func (v *Validation) TodoComment(field *Field) string {
return fmt.Sprintf("validation: exactly one field from %v should be present", v.fieldsWithPath(field))
case AtLeastOneValueSet:
return fmt.Sprintf("validation: at least one of the fields %v should be set", v.fieldsWithPath(field))
case ValidateValueSet:
return fmt.Sprintf("validation: %v should be set", v.fieldsWithPath(field))
case ValidateValue:
return fmt.Sprintf("validation: %v should be valid", v.fieldsWithPath(field)[0])
}
Expand Down
1 change: 1 addition & 0 deletions pkg/sdk/poc/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ var definitionMapping = map[string]*generator.Interface{
"application_roles_def.go": sdk.ApplicationRolesDef,
"views_def.go": sdk.ViewsDef,
"stages_def.go": sdk.StagesDef,
"procedures_def.go": sdk.ProceduresDef,
"event_tables_def.go": sdk.EventTablesDef,
}

Expand Down
Loading

0 comments on commit 6b563ac

Please sign in to comment.