Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 66 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,13 @@ All Vault APIs must be invoked using a skyflowClient instance.

#### Insert data into the vault

To insert data into your vault, use the **Insert(records map[string]interface{}, options common.InsertOptions)** method of the Skyflow client. The **insertInput** parameter requires a `records` key and takes an array of records to insert as a value into the vault. The `options` parameter is a InsertOptions object that provides further options, including Upsert operations, for your insert call, as shown below.
To insert data into your vault, use the **Insert(records map[string]interface{}, options common.InsertOptions)** method of the Skyflow client. The **insertInput** parameter requires a `records` key and takes an array of records to insert as a value into the vault.

You can also pass custom tokens for a particular field in a records object, instead of a Skyflow generated token.

`Note`: All keys that exist in the `tokens` object should exist in the fields object.

The `options` parameter is a InsertOptions object that provides further options, including Upsert operations, for your insert call, as shown below.

Insert call schema:

Expand All @@ -134,6 +140,10 @@ var fields = make(map[string] interface {})
fields["<field_name>"] = "<field_value>"
record["fields"] = fields

var tokens = make(map[string] interface {})
tokens["<field_name>"] = "<token>"
record["tokens"] = tokens

var recordsArray[] interface {}
recordsArray = append(recordsArray, record)

Expand All @@ -150,8 +160,62 @@ options = common.InsertOptions {

res, err: = skyflowClient.Insert(records, options)
```
Insert call example with Tokens:
```go
package main

import (
"fmt"
Skyflow "github.com/skyflowapi/skyflow-go/skyflow/client"
"github.com/skyflowapi/skyflow-go/skyflow/common"
)
func main() {
var records = make(map[string] interface {})
var record = make(map[string] interface {})
record["table"] = "cards"

var fields = make(map[string] interface {})
fields["card_number"] = "411111111111"
fields["fullname"] = "name"
record["fields"] = fields

var tokens = make(map[string] interface {})
tokens["card_number"] = "34dd6cc8-e201-4fbe-aed2-002fcef37f09"
record["tokens"] = tokens

var recordsArray[] interface {}
recordsArray = append(recordsArray, record)
records["records"] = recordsArray

var options = common.InsertOptions {
Tokens: true
}
res, err: = skyflowClient.Insert(records, options)

if err == nil {
fmt.Println(res.Records)
}
}
```

Sample response :
```json
{
"records": [
{
"table": "cards",
"fields": {
"card_number": "34dd6cc8-e201-4fbe-aed2-002fcef37f09",
"fullname": "1989cb56-63a-4482-adf-1f74cd1a5"
}
}
]
}
```



[Insert call example](https://github.com/skyflowapi/skyflow-go/blob/main/samples/vault-api/insert.go):
[Insert call example without Tokens](https://github.com/skyflowapi/skyflow-go/blob/main/samples/vault-api/insert.go):

```go
package main
Expand Down
66 changes: 66 additions & 0 deletions samples/vaultapi/insert_custom_token.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/*
Copyright (c) 2022 Skyflow, Inc.
*/
package main

import (
"fmt"

logger "github.com/skyflowapi/skyflow-go/commonutils/logwrapper"
saUtil "github.com/skyflowapi/skyflow-go/serviceaccount/util"
Skyflow "github.com/skyflowapi/skyflow-go/skyflow/client"
"github.com/skyflowapi/skyflow-go/skyflow/common"
)

var bearerToken = ""

func GetToken() (string, error) {

filePath := "<file_path>"
if saUtil.IsExpired(bearerToken) {
newToken, err := saUtil.GenerateBearerToken(filePath)
if err != nil {
return "", err
} else {
bearerToken = newToken.AccessToken
return bearerToken, nil
}
}
return bearerToken, nil
}

func main() {

defer func() {
if err := recover(); err != nil {
fmt.Println("error : ", err)
}
}()
logger.SetLogLevel(logger.INFO) //set loglevel to INFO
configuration := common.Configuration{VaultID: "<vault_id>", VaultURL: "<vault_url>", TokenProvider: GetToken}
var client = Skyflow.Init(configuration)
var options = common.InsertOptions{Tokens: false}
var records = make(map[string]interface{})
var record = make(map[string]interface{})
record["table"] = "cards"
var fields = make(map[string]interface{})
fields["card_number"] = "123"
fields["cvv"] = "123"
fields["fullname"] = "name"
record["fields"] = fields

var tokens = make(map[string]interface{})
tokens["<field_name>"] = "<token>"

record["tokens"] = tokens

var recordsArray []interface{}
recordsArray = append(recordsArray, record)
records["records"] = recordsArray
res, err := client.Insert(records, options)
if err == nil {
fmt.Println("Records : ", res.Records)
} else {
panic(err.GetMessage())
}
}