Graph
Introduction
The Graph ADO allows users to construct a customized graphs. The user first specifies the configurations of the graph at instantiation. Then they are able to store coordinates for points on the graph. These saved points can then be fetched by using the ADO's queries.
The graph can be a 3D graph (x,y, and z coordinates) or a 2D graph (x,y coordinates only).
This ADO can also save and fetch points stored in the Point ADO.
Ado_type: graph
Version: 0.1.0
InstantiateMsg
pub struct InstantiateMsg {
pub map_info: MapInfo,
pub kernel_address: String,
pub owner: Option<String>,
}
kernel_address
String
Contract address of the kernel contract to be used for AMP messaging. Kernel contract address can be found in our deployed contracts.
owner
Option<String>
Optional address to specify as the owner of the ADO being created. Defaults to the sender if not specified.
MapInfo
#[cw_serde]
pub struct MapInfo {
pub map_size: MapSize,
pub allow_negative: bool,
pub map_decimal: u16,
}
allow_negative
bool
Whether negative values can be assigned to points of the map. In case negative is allowed, the width of the axis is divided between the positive and negative halfs. For example if negative is allowed and the x_width
is set as 1000, then the the x coordinate range is between -500 and 500.
map_decimal
u16
The max number of decimal points that can be specified for a point. For example, if the x_coordinate
is set as 4.12345 and the map_decimal
is set as 2, then the x coordinate is taken as 4.12 only.
MapSize
#[cw_serde]
pub struct MapSize {
pub x_width: u64,
pub y_width: u64,
pub z_width: Option<u64>,
}
x_width
u64
The maximum allowed x coordinate for the map.
y_width
u64
The maximum allowed y coordinate for the map.
z_width
Option<u64>
The maximum allowed z coordinate for the map. Can be ommited in case a 2D map is wanted by the user.
ExecuteMsg
UpdateMap
Update the map configurations set at instantiation.
Only available to the contract owner.
pub enum ExecuteMsg {
UpdateMap {
map_info: MapInfo,
},
}
StoreCoordinate
Stores the coordinates of a point on the map.
Only available to the contract owner.
pub enum ExecuteMsg {
StoreCoordinate {
coordinate: Coordinate,
is_timestamp_allowed: bool,
}
}
is_timestamp_allowed
bool
Whether to store the timestamp that the point was created. If yes, then it would show along with the coordinates when queried.
Coordinate
#[cw_serde]
pub struct Coordinate {
pub x_coordinate: SignedDecimal,
pub y_coordinate: SignedDecimal,
pub z_coordinate: Option<SignedDecimal>,
}
/// A signed fixed-point decimal value with 18 fractional digits.
/// The greatest possible value that can be represented is
/// 170141183460469231731.687303715884105727 (which is (2^127 - 1) / 10^18)
/// and the smallest is
/// -170141183460469231731.687303715884105728 (which is -2^127 / 10^18).
pub struct SignedDecimal(#[schemars(with = "String")] Int128);
x_coordinate
SignedDecimal
The x coordinate for the point.
y_coordinate
SignedDecimal
The y coordinate for the point.
z_coordinate
Option<SignedDecimal>
The z coordinate for the point. Do not specify in case the map is 2D (Only x and y).
StoreUserCoordinate
Store the coordinates from the specified Point ADO addresses.
If the coordinates of the point ADO are changed, you need to call this message again on that Point ADO to store the new coordinates.
pub enum ExecuteMsg {
StoreUserCoordinate {
user_location_paths: Vec<AndrAddr>,
},
}
user_location_paths
Vec<AndrAddr>
A vector containing the addresses of the point ADOs.
DeleteUserCoordinate
Deletes the coordinate set for the specified point in the Point ADO.
pub enum ExecuteMsg {
DeleteUserCoordinate {
user: AndrAddr,
},
}
user
AndrAddr
The Point ADO contract address to remove.
Base Executes
The rest of the execute messages can be found in the ADO Base section.
QueryMsg
GetMapInfo
Queries the map configurations set at instantiation.
pub enum QueryMsg {
#[returns(GetMapInfoResponse)]
GetMapInfo {},
}
GetMapInfoResponse
#[cw_serde]
pub struct GetMapInfoResponse {
pub map_info: MapInfo,
}
Returns a MapInfo struct.
GetMaxPointNumber
Queries the total number of points created.
pub enum QueryMsg {
#[returns(GetMaxPointNumberResponse)]
GetMaxPointNumber {},
}
GetMaxPointResponse
#[cw_serde]
pub struct GetMaxPointNumberResponse {
pub max_point: u128,
}
max_point
u128
The total number of points created on the graph.
GetAllPoints
Queries all the created points, fetching their coordinates and timestamps if enabled.
pub enum QueryMsg {
#[returns(GetAllPointsResponse)]
GetAllPoints {
start: Option<u128>,
limit: Option<u32>,
},
}
start
Option<u128>
Optional point to start from. Used for pagination.
limit
Option<u32>
Optional limit on the number of results to return. Used for pagination.
GetAllPointsResponse
#[cw_serde]
pub struct GetAllPointsResponse {
pub points: Vec<(CoordinateInfo, StoredDate)>,
}
#[cw_serde]
pub struct CoordinateInfo {
pub x: String,
pub y: String,
pub z: Option<String>,
}
#[cw_serde]
pub struct StoredDate {
pub timestamp: Option<u64>,
}
Returns a vector containing the coordinates of each point. Points that had timestamp enabled will have the timestamp returned as well.
GetUserCoordinate
Fetches the coordinate saved for the specified Point ADO.
pub enum QueryMsg {
#[returns(CoordinateInfo)]
GetUserCoordinate { user: AndrAddr },
}
user
AndrAddr
The address of the user who set the coordinates in the point ADO.
Returns an instance of CoordinateInfo.
Base Queries
The rest of the query messages can be found in the ADO Base section.
Last updated
Was this helpful?