mirror of
https://github.com/FlipsideCrypto/flip-rpc-client-go.git
synced 2026-02-06 10:56:45 +00:00
|
|
||
|---|---|---|
| dynamicquery | ||
| segment | ||
| .gitignore | ||
| client_test.go | ||
| client.go | ||
| dataset.go | ||
| dynamic_query.go | ||
| go.mod | ||
| go.sum | ||
| partition.go | ||
| README.md | ||
| refresh_job.go | ||
| rpc.go | ||
| segment.go | ||
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