From 8dc1e1c3d08824e540ea9e0985124b67bd3f29bf Mon Sep 17 00:00:00 2001 From: KeisukeYamashita <19yamashita15@gmail.com> Date: Thu, 4 Nov 2021 02:13:44 +0900 Subject: [PATCH 1/4] Fix synonyms data source Signed-off-by: KeisukeYamashita <19yamashita15@gmail.com> --- typesense/data_source_synonyms.go | 55 +++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/typesense/data_source_synonyms.go b/typesense/data_source_synonyms.go index aaef457..46e3628 100644 --- a/typesense/data_source_synonyms.go +++ b/typesense/data_source_synonyms.go @@ -1,7 +1,13 @@ package typesense import ( + "context" + "fmt" + "log" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/typesense/typesense-go/typesense" ) func dataSourceTypesenseSynonyms() *schema.Resource { @@ -22,7 +28,9 @@ func dataSourceTypesenseSynonyms() *schema.Resource { Type: schema.TypeList, Description: "Target collection names", Computed: true, - Elem: &schema.Resource{}, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, }, "root": { Type: schema.TypeString, @@ -30,6 +38,49 @@ func dataSourceTypesenseSynonyms() *schema.Resource { Description: "Root for one-way synonym", }, }, - ReadContext: resourceTypesenseSynonymsRead, + ReadContext: dataSourceTypesenseSynonymsRead, + } +} + +func dataSourceTypesenseSynonymsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + client := meta.(*typesense.Client) + + var diags diag.Diagnostics + + name := d.Get("name").(string) + collectionName := d.Get("collection_name").(string) + + id := fmt.Sprintf("%s.%s", name, collectionName) + + synonym, err := client.Collection(collectionName).Synonym(name).Retrieve() + if err != nil { + d.SetId("") + return diag.FromErr(err) + } + + if err := d.Set("collection_name", collectionName); err != nil { + return diag.FromErr(err) } + + if err := d.Set("name", synonym.Id); err != nil { + return diag.FromErr(err) + } + + log.Println(synonym.Synonyms) + + if err := d.Set("synonyms", synonym.Synonyms); err != nil { + return diag.FromErr(err) + } + + if synonym.Root != "" { + if err := d.Set("root", synonym.Root); err != nil { + if err := d.Set("root", synonym.Root); err != nil { + return diag.FromErr(err) + } + } + } + + d.SetId(id) + + return diags } From 2882781348e249b1391b61bc162196378275b7e2 Mon Sep 17 00:00:00 2001 From: KeisukeYamashita <19yamashita15@gmail.com> Date: Thu, 4 Nov 2021 02:55:57 +0900 Subject: [PATCH 2/4] Fix document read Signed-off-by: KeisukeYamashita <19yamashita15@gmail.com> --- typesense/data_source_document.go | 43 ++++++++++++++++++++++++++++++- typesense/data_source_synonyms.go | 2 +- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/typesense/data_source_document.go b/typesense/data_source_document.go index 82b0dcd..5ad71c7 100644 --- a/typesense/data_source_document.go +++ b/typesense/data_source_document.go @@ -1,7 +1,12 @@ package typesense import ( + "context" + "fmt" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/typesense/typesense-go/typesense" ) func dataSourceTypesenseDocument() *schema.Resource { @@ -22,6 +27,42 @@ func dataSourceTypesenseDocument() *schema.Resource { }, }, }, - ReadContext: resourceTypesenseDocumentRead, + ReadContext: dataSourceTypesenseDocumentRead, + } +} + +func dataSourceTypesenseDocumentRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + client := meta.(*typesense.Client) + + var diags diag.Diagnostics + + collectionName := d.Get("collection_name").(string) + + document := d.Get("document").(map[string]interface{}) + + var docId string + if v, ok := document["id"]; ok { + docId = v.(string) + } else { + return diag.Errorf("id required") } + + id := fmt.Sprintf("%s.%s", collectionName, docId) + + doc, err := client.Collection(collectionName).Document(docId).Retrieve() + if err != nil { + d.SetId("") + return diag.FromErr(err) + } + + if err := d.Set("document", doc); err != nil { + return diag.FromErr(err) + } + + if err := d.Set("collection_name", collectionName); err != nil { + return diag.FromErr(err) + } + + d.SetId(id) + return diags } diff --git a/typesense/data_source_synonyms.go b/typesense/data_source_synonyms.go index 46e3628..49c0de2 100644 --- a/typesense/data_source_synonyms.go +++ b/typesense/data_source_synonyms.go @@ -50,7 +50,7 @@ func dataSourceTypesenseSynonymsRead(ctx context.Context, d *schema.ResourceData name := d.Get("name").(string) collectionName := d.Get("collection_name").(string) - id := fmt.Sprintf("%s.%s", name, collectionName) + id := fmt.Sprintf("%s.%s", collectionName, name) synonym, err := client.Collection(collectionName).Synonym(name).Retrieve() if err != nil { From e40d99774153c2750d98a11997942814bb93268b Mon Sep 17 00:00:00 2001 From: KeisukeYamashita <19yamashita15@gmail.com> Date: Thu, 4 Nov 2021 03:03:01 +0900 Subject: [PATCH 3/4] Fix data source for curation Signed-off-by: KeisukeYamashita <19yamashita15@gmail.com> --- typesense/data_source_collection_alias.go | 3 +- typesense/data_source_curation.go | 50 ++++++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/typesense/data_source_collection_alias.go b/typesense/data_source_collection_alias.go index 9af1c95..aa2068c 100644 --- a/typesense/data_source_collection_alias.go +++ b/typesense/data_source_collection_alias.go @@ -23,7 +23,7 @@ func dataSourceTypesenseCollectionAlias() *schema.Resource { Computed: true, }, }, - ReadContext: dataSourceTypesenseCollectionAliasRead, + ReadContext: resourceTypesenseCollectionAliasRead, } } @@ -48,5 +48,6 @@ func dataSourceTypesenseCollectionAliasRead(ctx context.Context, d *schema.Resou return diag.FromErr(err) } + d.SetId("id") return diags } diff --git a/typesense/data_source_curation.go b/typesense/data_source_curation.go index 639daca..a4a6300 100644 --- a/typesense/data_source_curation.go +++ b/typesense/data_source_curation.go @@ -1,7 +1,12 @@ package typesense import ( + "context" + "fmt" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/typesense/typesense-go/typesense" ) func dataSourceTypesenseCuration() *schema.Resource { @@ -69,6 +74,49 @@ func dataSourceTypesenseCuration() *schema.Resource { }, }, }, - ReadContext: resourceTypesenseCurationRead, + ReadContext: dataSourceTypesenseCurationRead, + } +} + +func dataSourceTypesenseCurationRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + client := meta.(*typesense.Client) + + var diags diag.Diagnostics + + name := d.Get("name").(string) + collectionName := d.Get("collection_name").(string) + id := fmt.Sprintf("%s.%s", collectionName, name) + + override, err := client.Collection(collectionName).Override(name).Retrieve() + if err != nil { + d.SetId("") + return diag.FromErr(err) + } + + if err := d.Set("name", override.Id); err != nil { + return diag.FromErr(err) } + + if err := d.Set("collection_name", collectionName); err != nil { + return diag.FromErr(err) + } + + if err := d.Set("rule", flattenCurationRule(override.Rule)); err != nil { + return diag.FromErr(err) + } + + if len(override.Includes) > 0 { + if err := d.Set("includes", flattenCurationIncludes(override.Includes)); err != nil { + return diag.FromErr(err) + } + } + + if len(override.Excludes) > 0 { + if err := d.Set("excludes", flattenCurationExcludes(override.Excludes)); err != nil { + return diag.FromErr(err) + } + } + + d.SetId(id) + return diags } From 48009c9576dddbd707eb338b71228a07830c9114 Mon Sep 17 00:00:00 2001 From: KeisukeYamashita <19yamashita15@gmail.com> Date: Thu, 4 Nov 2021 03:06:00 +0900 Subject: [PATCH 4/4] Fix collection data source read Signed-off-by: KeisukeYamashita <19yamashita15@gmail.com> --- typesense/data_source_collection.go | 39 ++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/typesense/data_source_collection.go b/typesense/data_source_collection.go index 440bb45..4cc5c81 100644 --- a/typesense/data_source_collection.go +++ b/typesense/data_source_collection.go @@ -1,12 +1,16 @@ package typesense import ( + "context" + "log" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/typesense/typesense-go/typesense" ) func dataSourceTypesenseCollection() *schema.Resource { return &schema.Resource{ - ReadContext: resourceTypesenseCollectionRead, Description: "Group of related documents which are roughly equivalent to a table in a relational database.", Schema: map[string]*schema.Schema{ "name": { @@ -55,5 +59,38 @@ func dataSourceTypesenseCollection() *schema.Resource { Computed: true, }, }, + ReadContext: dataSourceTypesenseCollectionRead, + } +} + +func dataSourceTypesenseCollectionRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + client := meta.(*typesense.Client) + + var diags diag.Diagnostics + + collection, err := client.Collection(d.Get("name").(string)).Retrieve() + if err != nil { + d.SetId("") + return diag.FromErr(err) + } + + log.Printf("[DEBUG] Got collection name:%s\n", collection.Name) + + if err := d.Set("name", collection.Name); err != nil { + return diag.FromErr(err) + } + + if err := d.Set("fields", flattenCollectionFields(collection.Fields)); err != nil { + return diag.FromErr(err) + } + + if err := d.Set("default_sorting_field", collection.DefaultSortingField); err != nil { + return diag.FromErr(err) + } + + if err := d.Set("num_documents", collection.NumDocuments); err != nil { + return diag.FromErr(err) } + + return diags }