mirror of
https://github.com/HeyPuter/puter.git
synced 2025-02-02 23:28:39 +08:00
Check cache first when returning stats for the all
period in the AppInformationService
This commit is contained in:
parent
027f52d0fd
commit
7252d2ef4f
@ -122,7 +122,7 @@ class AppInformationService {
|
|||||||
*
|
*
|
||||||
* This method fetches various metrics such as the number of times the app has been opened,
|
* This method fetches various metrics such as the number of times the app has been opened,
|
||||||
* the count of unique users who have opened the app, and the number of referrals attributed to the app.
|
* the count of unique users who have opened the app, and the number of referrals attributed to the app.
|
||||||
* It supports different time periods: today, yesterday, past 7 days, past 30 days, and all time.
|
* It supports different time periods such as today, yesterday, past 7 days, past 30 days, and all time.
|
||||||
*
|
*
|
||||||
* @param {string} app_uid - The unique identifier for the application.
|
* @param {string} app_uid - The unique identifier for the application.
|
||||||
* @param {Object} [options] - Optional parameters to customize the query
|
* @param {Object} [options] - Optional parameters to customize the query
|
||||||
@ -135,9 +135,30 @@ class AppInformationService {
|
|||||||
async get_stats(app_uid, options = {}) {
|
async get_stats(app_uid, options = {}) {
|
||||||
let period = options.period ?? 'all';
|
let period = options.period ?? 'all';
|
||||||
|
|
||||||
|
// Check cache first if period is 'all'
|
||||||
|
if (period === 'all') {
|
||||||
|
const key_open_count = `apps:open_count:uid:${app_uid}`;
|
||||||
|
const key_user_count = `apps:user_count:uid:${app_uid}`;
|
||||||
|
const key_referral_count = `apps:referral_count:uid:${app_uid}`;
|
||||||
|
|
||||||
|
const [cached_open_count, cached_user_count, cached_referral_count] = await Promise.all([
|
||||||
|
kv.get(key_open_count),
|
||||||
|
kv.get(key_user_count),
|
||||||
|
kv.get(key_referral_count)
|
||||||
|
]);
|
||||||
|
|
||||||
|
// If all cache values exist, return them
|
||||||
|
if (cached_open_count !== null && cached_user_count !== null) {
|
||||||
|
return {
|
||||||
|
open_count: parseInt(cached_open_count),
|
||||||
|
user_count: parseInt(cached_user_count),
|
||||||
|
referral_count: cached_referral_count
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const db = this.services.get('database').get(DB_READ, 'apps');
|
const db = this.services.get('database').get(DB_READ, 'apps');
|
||||||
|
|
||||||
console.log('get_stats', app_uid, options);
|
|
||||||
// Helper function to get timestamp for different periods
|
// Helper function to get timestamp for different periods
|
||||||
const getTimeRange = (period) => {
|
const getTimeRange = (period) => {
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
|
Loading…
Reference in New Issue
Block a user