Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add aggregateGroupByPeriod API #157

Merged
merged 2 commits into from
Oct 9, 2024

Conversation

taisuke-j
Copy link
Contributor

@taisuke-j taisuke-j commented Sep 11, 2024

Summary

Currently, the library only supports the aggregateRecord function to retrieve aggregated data within a specified time range and does not support either aggregateGroupByPeriod or aggregateGroupByDuration. This PR adds the aggregateGroupByPeriod API to the library. Once this is approved, I am ready to submit another PR for aggregateGroupByDuration and update the documentation accordingly.

Related Issues:

#16
#116

Background

I'm working on an app that visualizes various health data in charts. For example, to display daily weight changes over a month, we currently need to make 30 separate aggregateRecord requests, one for each day. With aggregateGroupByPeriod, we can potentially reduce the number of requests significantly. I suspect that the following error, which I occasionally encounter, may be related to exceeding the API call quota:

android.health.connect.HealthConnectException: android.health.connect.HealthConnectException: API call quota exceeded, availableQuota: 0.0151130445 requested: 1

Tests

I've made a couple of changes to the example app to test the new functionality:

  • insertSampleData: Updated the sample data insertion. The insertSampleData function now inserts step count data for each day between 9 and 11 AM for the past 7 days (excluding today, as it can be before 9 AM).
  • AGGREGATE SAMPLE GROUP DATA button: Added the "AGGREGATE SAMPLE GROUP DATA" button, as shown below, to test the aggregateGroupByPeriod API.
AGGREGATE_SAMPLE_GROUP_DATA

Log after AGGREGATE SAMPLE GROUP DATA button is pressed

# No sample data is inserted for TODAY (2024-09-11)

Aggregated Group:  {
  "result": [
    {
      "endTime": "2024-09-04T15:00",
      "startTime": "2024-09-03T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 1000
      }
    },
    {
      "endTime": "2024-09-05T15:00",
      "startTime": "2024-09-04T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 2000
      }
    },
    {
      "endTime": "2024-09-06T15:00",
      "startTime": "2024-09-05T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 3000
      }
    },
    {
      "endTime": "2024-09-07T15:00",
      "startTime": "2024-09-06T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 4000
      }
    },
    {
      "endTime": "2024-09-08T15:00",
      "startTime": "2024-09-07T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 5000
      }
    },
    {
      "endTime": "2024-09-09T15:00",
      "startTime": "2024-09-08T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 6000
      }
    },
    {
      "endTime": "2024-09-10T15:00",
      "startTime": "2024-09-09T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 7000
      }
    },
    {
      "endTime": "2024-09-11T10:50:12.182",
      "startTime": "2024-09-10T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 0
      }
    }
  ]
}

@matinzd
Copy link
Owner

matinzd commented Sep 13, 2024

Hey!

Thanks for the PR :) I will try to review it this weekend if I find some free time.

@taisuke-j
Copy link
Contributor Author

taisuke-j commented Sep 28, 2024

@matinzd Do you have time to take a look at the PR by any chance? Once this is approved, I can make another PR very similar to this for aggregateGroupByDuration.

@matinzd
Copy link
Owner

matinzd commented Sep 29, 2024

Hey!

I reviewed 60% of it. There are a lot of file changes so I need to be careful with the review :) Thanks for the follow-up.

src/types/base.types.ts Outdated Show resolved Hide resolved
@taisuke-j
Copy link
Contributor Author

@matinzd Thank you for the review! I will apply the changes soon

@taisuke-j
Copy link
Contributor Author

taisuke-j commented Oct 2, 2024

@matinzd I have applied the changes accordingly. And here is the log message for the record.

Log after AGGREGATE SAMPLE GROUP DATA button is pressed

# No sample data is inserted for TODAY (2024-10-02)

Aggregated Group:  {
  "result": [
    {
      "endTime": "2024-09-25T15:00",
      "startTime": "2024-09-24T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 1000
      }
    },
    {
      "endTime": "2024-09-26T15:00",
      "startTime": "2024-09-25T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 2000
      }
    },
    {
      "endTime": "2024-09-27T15:00",
      "startTime": "2024-09-26T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 3000
      }
    },
    {
      "endTime": "2024-09-28T15:00",
      "startTime": "2024-09-27T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 4000
      }
    },
    {
      "endTime": "2024-09-29T15:00",
      "startTime": "2024-09-28T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 5000
      }
    },
    {
      "endTime": "2024-09-30T15:00",
      "startTime": "2024-09-29T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 6000
      }
    },
    {
      "endTime": "2024-10-01T15:00",
      "startTime": "2024-09-30T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 7000
      }
    },
    {
      "endTime": "2024-10-02T12:47:21.255",
      "startTime": "2024-10-01T15:00",
      "result": {
        "dataOrigins": [],
        "COUNT_TOTAL": 0
      }
    }
  ]
}

@taisuke-j taisuke-j requested a review from matinzd October 2, 2024 12:57
@taisuke-j
Copy link
Contributor Author

@matinzd Just a friendly reminder that I made the suggested changes. Please take a look when you can :)

@matinzd
Copy link
Owner

matinzd commented Oct 9, 2024

Looks good to me! I will release it soon.

@matinzd matinzd merged commit a2d95d6 into matinzd:main Oct 9, 2024
3 checks passed
@taisuke-j
Copy link
Contributor Author

@matinzd Thanks! Will work on aggregateGroupByDuration next.

@matinzd
Copy link
Owner

matinzd commented Oct 10, 2024

Very nice! Can't wait to see that!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants