Implement datapoint update endpoint

This commit is contained in:
2025-01-27 20:58:41 -05:00
parent 1000d5ea2d
commit d368d045ce
4 changed files with 145 additions and 15 deletions

View File

@@ -1,7 +1,7 @@
use beeminder::types::CreateDatapoint;
use beeminder::types::{CreateDatapoint, UpdateDatapoint};
use beeminder::BeeminderClient;
use std::env;
use time::macros::datetime;
use time::{Duration, OffsetDateTime};
#[tokio::main]
async fn main() {
@@ -14,22 +14,44 @@ async fn main() {
Err(e) => println!("{e:#?}"),
}
let since = datetime!(2024-12-13 20:00 UTC);
let since = OffsetDateTime::now_utc() - Duration::days(2);
match client.get_user_diff(since).await {
Ok(user) => println!("{user:#?}"),
Err(e) => println!("{e:#?}"),
}
match client.get_datapoints("meditation", None, Some(2)).await {
Ok(datapoints) => println!("{datapoints:#?}"),
Err(e) => println!("{e:#?}"),
}
let d = CreateDatapoint::new(1.0)
.with_comment("Test #hashtag datapoint")
.with_requestid("unique-id-42");
match client.create_datapoint("meditation", &d).await {
let new_datapoint = CreateDatapoint::new(20.0)
.with_comment("I did some pushups!")
.with_requestid("unique-pushup-id-42");
match client.create_datapoint("pushups", &new_datapoint).await {
Ok(datapoint) => println!("Added: {datapoint:#?}"),
Err(e) => println!("{e:#?}"),
}
let goal_name = "pushups";
match client.get_datapoints(&goal_name, None, Some(3)).await {
Ok(datapoints) => {
if let Some(first_datapoint) = datapoints.first() {
let update_datapoint = UpdateDatapoint::from(first_datapoint)
.with_value(40.0)
.with_comment("Much better.");
match client.update_datapoint(&goal_name, &update_datapoint).await {
Ok(datapoint) => println!("Updated: {datapoint:#?}"),
Err(e) => println!("Update error: {e:#?}"),
}
match client
.delete_datapoint(&goal_name, &update_datapoint.id)
.await
{
Ok(datapoint) => println!("Deleted: {datapoint:#?}"),
Err(e) => println!("Delete error: {e:#?}"),
}
} else {
println!("No datapoints found");
}
}
Err(e) => println!("Get datapoints error: {e:#?}"),
}
}