Skip to content

Commit

Permalink
Implement import
Browse files Browse the repository at this point in the history
Signed-off-by: KeisukeYamashita <19yamashita15@gmail.com>
  • Loading branch information
KeisukeYamashita committed Nov 3, 2021
1 parent 7c97e6a commit eeec3f3
Show file tree
Hide file tree
Showing 4 changed files with 100 additions and 20 deletions.
36 changes: 29 additions & 7 deletions typesense/resource_curation.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package typesense

import (
"context"
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
Expand Down Expand Up @@ -83,7 +84,7 @@ func resourceTypesenseCuration() *schema.Resource {
UpdateContext: resourceTypesenseCurationUpsert,
DeleteContext: resourceTypesenseCurationDelete,
Importer: &schema.ResourceImporter{
StateContext: schema.ImportStatePassthroughContext,
StateContext: resourceTypesenseCurationState,
},
}
}
Expand Down Expand Up @@ -144,7 +145,7 @@ func resourceTypesenseCurationUpsert(ctx context.Context, d *schema.ResourceData
return diag.FromErr(err)
}

d.SetId(override.Id)
d.SetId(fmt.Sprintf("%s.%s", collectionName, override.Id))
return diags
}

Expand All @@ -153,8 +154,10 @@ func resourceTypesenseCurationRead(ctx context.Context, d *schema.ResourceData,

var diags diag.Diagnostics

id := d.Id()
collectionName := d.Get("collection_name").(string)
collectionName, id, err := splitCollectionRelatedId(d.Id(), "curation")
if err != nil {
return diag.FromErr(err)
}

override, err := client.Collection(collectionName).Override(id).Retrieve()
if err != nil {
Expand Down Expand Up @@ -190,10 +193,12 @@ func resourceTypesenseCurationDelete(ctx context.Context, d *schema.ResourceData

var diags diag.Diagnostics

id := d.Id()
collectionName := d.Get("collection_name").(string)
collectionName, id, err := splitCollectionRelatedId(d.Id(), "curation")
if err != nil {
return diag.FromErr(err)
}

_, err := client.Collection(collectionName).Override(id).Delete()
_, err = client.Collection(collectionName).Override(id).Delete()
if err != nil {
return diag.FromErr(err)
}
Expand All @@ -202,6 +207,23 @@ func resourceTypesenseCurationDelete(ctx context.Context, d *schema.ResourceData
return diags
}

func resourceTypesenseCurationState(ctx context.Context, d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
client := meta.(*typesense.Client)

collectionName, id, err := splitCollectionRelatedId(d.Id(), "alias")
if err != nil {
return nil, err
}

override, err := client.Collection(collectionName).Override(id).Retrieve()
if err != nil {
return nil, err
}

d.SetId(fmt.Sprintf("%s.%s", collectionName, override.Id))
return []*schema.ResourceData{d}, nil
}

func flattenCurationRule(rule api.SearchOverrideRule) []interface{} {
res := []interface{}{}
res[0] = map[string]interface{}{
Expand Down
36 changes: 29 additions & 7 deletions typesense/resource_document.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package typesense

import (
"context"
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
Expand Down Expand Up @@ -37,7 +38,7 @@ func resourceTypesenseDocument() *schema.Resource {
UpdateContext: resourceTypesenseDocumentUpsert,
DeleteContext: resourceTypesenseDocumentDelete,
Importer: &schema.ResourceImporter{
StateContext: schema.ImportStatePassthroughContext,
StateContext: resourceTypesenseDocumentState,
},
}
}
Expand Down Expand Up @@ -71,7 +72,7 @@ func resourceTypesenseDocumentUpsert(ctx context.Context, d *schema.ResourceData
return diag.FromErr(err)
}

d.SetId(id)
d.SetId(fmt.Sprintf("%s.%s", collectionName, id))
return diags
}

Expand All @@ -80,8 +81,10 @@ func resourceTypesenseDocumentRead(ctx context.Context, d *schema.ResourceData,

var diags diag.Diagnostics

id := d.Id()
collectionName := d.Get("collection_name").(string)
collectionName, id, err := splitCollectionRelatedId(d.Id(), "document")
if err != nil {
return diag.FromErr(err)
}

doc, err := client.Collection(collectionName).Document(id).Retrieve()
if err != nil {
Expand All @@ -101,14 +104,33 @@ func resourceTypesenseDocumentDelete(ctx context.Context, d *schema.ResourceData

var diags diag.Diagnostics

id := d.Id()
collectionName := d.Get("collection_name").(string)
collectionName, id, err := splitCollectionRelatedId(d.Id(), "document")
if err != nil {
return diag.FromErr(err)
}

_, err := client.Collection(collectionName).Document(id).Delete()
_, err = client.Collection(collectionName).Document(id).Delete()
if err != nil {
return diag.FromErr(err)
}

d.SetId("")
return diags
}

func resourceTypesenseDocumentState(ctx context.Context, d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
client := meta.(*typesense.Client)

collectionName, id, err := splitCollectionRelatedId(d.Id(), "document")
if err != nil {
return nil, err
}

doc, err := client.Collection(collectionName).Document(id).Retrieve()
if err != nil {
return nil, err
}

d.SetId(fmt.Sprintf("%s.%s", collectionName, doc["id"]))
return []*schema.ResourceData{d}, nil
}
34 changes: 28 additions & 6 deletions typesense/resource_synonyms.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package typesense

import (
"context"
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
Expand Down Expand Up @@ -42,7 +43,7 @@ func resourceTypesenseSynonyms() *schema.Resource {
UpdateContext: resourceTypesenseSynonymsUpsert,
DeleteContext: resourceTypesenseSynonymsDelete,
Importer: &schema.ResourceImporter{
StateContext: schema.ImportStatePassthroughContext,
StateContext: resourceTypesenseSynonymsState,
},
}
}
Expand Down Expand Up @@ -76,8 +77,10 @@ func resourceTypesenseSynonymsRead(ctx context.Context, d *schema.ResourceData,

var diags diag.Diagnostics

id := d.Id()
collectionName := d.Get("collection_name").(string)
collectionName, id, err := splitCollectionRelatedId(d.Id(), "synonyms")
if err != nil {
return diag.FromErr(err)
}

synonym, err := client.Collection(collectionName).Synonym(id).Retrieve()
if err != nil {
Expand Down Expand Up @@ -108,14 +111,33 @@ func resourceTypesenseSynonymsDelete(ctx context.Context, d *schema.ResourceData

var diags diag.Diagnostics

id := d.Id()
collectionName := d.Get("collection_name").(string)
collectionName, id, err := splitCollectionRelatedId(d.Id(), "document")
if err != nil {
return diag.FromErr(err)
}

_, err := client.Collection(collectionName).Synonym(id).Delete()
_, err = client.Collection(collectionName).Synonym(id).Delete()
if err != nil {
return diag.FromErr(err)
}

d.SetId("")
return diags
}

func resourceTypesenseSynonymsState(ctx context.Context, d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
client := meta.(*typesense.Client)

collectionName, id, err := splitCollectionRelatedId(d.Id(), "synonyms")
if err != nil {
return nil, err
}

synonym, err := client.Collection(collectionName).Synonym(id).Retrieve()
if err != nil {
return nil, err
}

d.SetId(fmt.Sprintf("%s.%s", collectionName, synonym.Id))
return []*schema.ResourceData{d}, nil
}
14 changes: 14 additions & 0 deletions typesense/util.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package typesense

import (
"fmt"
"strings"
)

func interfaceArrayToStringArray(inputs []interface{}) []string {
res := make([]string, len(inputs))
for i, input := range inputs {
Expand All @@ -8,3 +13,12 @@ func interfaceArrayToStringArray(inputs []interface{}) []string {

return res
}

func splitCollectionRelatedId(input string, resourceType string) (string, string, error) {
eles := strings.Split(input, ".")
if len(eles) != 2 {
return "", "", fmt.Errorf("invalid format, format should be <collection>.<%s>", resourceType)
}

return eles[0], eles[1], nil
}

0 comments on commit eeec3f3

Please sign in to comment.