Categorygithub.com/FlipsideCrypto/flip-rpc-client-go
modulepackage
1.8.0
Repository: https://github.com/flipsidecrypto/flip-rpc-client-go.git
Documentation: pkg.go.dev

# README

flip-client-go

Go client for accessing Flip RPC Interface

Usage

Initialization

config := Config{APIKey: "<api-key>" BaseURL: "<url-to-the-rpc>"}
client, err := NewClient(config)

Get Segment Members

Evaluate a segment's conditions and retrieve its members.

gte := segment.Gte{
    PartitionID: "sorted_set:ad43bf8e-0f0c-4102-be91-52bc84150af2:current_balances:flipside",
    Value:       10000000,
}
condition := segment.Condition{
    Gte: gte,
}

result, err := client.GetSegmentMembers(condition)

Intersect Members to Segment

Identify the intersection of an array of members to a segment's evaluated conditions.

intersectMembers := make([]string, 0)
intersectMembers = append(intersectMembers, "a090b025a1489aa6c9204d7b85ac77d51b814402d5cbdec27335575bb46e4f20")

gte := segment.Gte{
    PartitionID: "sorted_set:ad43bf8e-0f0c-4102-be91-52bc84150af2:current_balances:flipside",
    Value:       10000000,
}
condition := segment.Condition{
    Gte: gte,
}

result, err := client.IntersectMembersToSegment(intersectMembers, condition)

Get Member Partitions

For a particular entityID and memberID return the partitions that the member belongs to.

entityID := "ad43bf8e-0f0c-4102-be91-52bc84150af2"
memberID := "a0969f676e0274c34fffb4261b59d3de48de0d5845ed9780ac43045cf954ed81"

result, err := client.GetMemberPartitions(entityID, memberID)

ExecuteDynamicQuery

Execute a query.

gte := segment.Gte{
    PartitionID: "sorted_set:ad43bf8e-0f0c-4102-be91-52bc84150af2:current_balances:flipside",
    Value:       10000000,
}

segments := make(map[string]segment.Condition)
segments["large_balance_holder"] = segment.Condition{
    Gte: gte,
}

aggregates := make([]dynamicquery.Aggregate, 0)
aggregates = append(aggregates, dynamicquery.Aggregate{
    Field:             "event_amount",
    Label:             "total_amount",
    DecimalAdjustment: 16,
    Operation:         "sum",
})

groupBy := make([]dynamicquery.GroupBy, 0)
groupBy = append(groupBy, dynamicquery.GroupBy{
    Field:      "block_timestamp",
    Timebucket: "1 day",
    Label:      "metric_date",
})

inSegment := dynamicquery.InSegment{
    Field: "event_to",
    Value: "large_balance_holder",
}
filter := dynamicquery.Filter{
    InSegment: inSegment,
}

query := dynamicquery.Query{
    Table:      "udm_events_aion",
    Schema:     "source",
    Filter:     filter,
    GroupBy:    groupBy,
    Aggregates: aggregates,
    Segments:   segments,
}

debug := false

result, err := client.ExecuteDynamicQuery(query, debug)

Get Datasets

Retreive available datasets and apply optional filters (entityID, ownerID).

// Get the datasets corresponding to entityID and ownerID
entityID := "ad43bf8e-0f0c-4102-be91-52bc84150af2"
ownderID := ""

result, err := client.GetDatasets(entityID, ownerID)

Refresh

Refresh a metric or dataset using the provided filters.


// Incremental Refresh of Metrics
entityID := "ad43bf8e-0f0c-4102-be91-52bc84150af2"

tags := make([]string, 0)
tags = append(tags, "60m")

ra := RefreshArgs{
    EntityID: entityID,
    Stage:    "INCREMENTAL_REFRESH",
    Tags:     tags,
}

result, err := client.Refresh(entityID, ownerID)

// Incremental Refresh of all Datasets

refreshArgs := RefreshArgs{
    Stage:    "DATASET_BUILD",
}

result, err := client.Refresh(refreshArgs)

Get Refresh Job

Get the status of a refresh job.

// Retrieve the status of this job
jobID := "0f5f8149-03b7-4809-ae3b-0b319cf062c0"

result, err := client.GetRefreshJob(jobID)

Test

go test

# Packages

No description provided by the author
No description provided by the author

# Functions

NewClient returns a new Databridge Client.

# Structs

Client allows access to the Flip RPC Interface.
Config allows a consuming app to set up API Key.
Dataset is a set of rules that define attributes over a distinct set of members.
ExecuteDynamicQueryResponse returns the RPC response.
GetDatasetsResponse returns the RPC response.
GetMemberPartitionsResponse returns the RPC response.
GetSegmentMembersResponse returns the RPC response.
IntersectMembersToSegmentResponse returns the RPC response.
Partition is a slice of a dataset corresponding to a particular member attribute.
RefreshArgs are used as filters to determine what to refresh.
RefreshResponse returns the RPC response.
RPCPayload the input structure for the RPC request.
RPCResponse the response structure of the RPC interface.