Skip to content

Commit

Permalink
Merge pull request #12 from Kekenika/fix-datasource-reads
Browse files Browse the repository at this point in the history
Fix datasource reads
  • Loading branch information
KeisukeYamashita committed Nov 3, 2021
2 parents b19ffa3 + 48009c9 commit 71f77ac
Show file tree
Hide file tree
Showing 5 changed files with 184 additions and 6 deletions.
39 changes: 38 additions & 1 deletion typesense/data_source_collection.go
Original file line number Diff line number Diff line change
@@ -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": {
Expand Down Expand Up @@ -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
}
3 changes: 2 additions & 1 deletion typesense/data_source_collection_alias.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func dataSourceTypesenseCollectionAlias() *schema.Resource {
Computed: true,
},
},
ReadContext: dataSourceTypesenseCollectionAliasRead,
ReadContext: resourceTypesenseCollectionAliasRead,
}
}

Expand All @@ -48,5 +48,6 @@ func dataSourceTypesenseCollectionAliasRead(ctx context.Context, d *schema.Resou
return diag.FromErr(err)
}

d.SetId("id")
return diags
}
50 changes: 49 additions & 1 deletion typesense/data_source_curation.go
Original file line number Diff line number Diff line change
@@ -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 {
Expand Down Expand Up @@ -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
}
43 changes: 42 additions & 1 deletion typesense/data_source_document.go
Original file line number Diff line number Diff line change
@@ -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 {
Expand All @@ -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
}
55 changes: 53 additions & 2 deletions typesense/data_source_synonyms.go
Original file line number Diff line number Diff line change
@@ -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 {
Expand All @@ -22,14 +28,59 @@ 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,
Computed: true,
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", collectionName, name)

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
}

0 comments on commit 71f77ac

Please sign in to comment.