# 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
# 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.