From eab728ad5a59d7232d64ed2409f546bf7cd8cef6 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 11 Oct 2023 19:12:16 +0200 Subject: [PATCH] feat: project usage --- src/lib/stores/organization.ts | 1 + .../account/payments/editAddressModal.svelte | 2 +- .../settings/usage/[[period]]/+page.svelte | 180 +++++++++++++++--- .../settings/usage/[[period]]/+page.ts | 20 +- 4 files changed, 168 insertions(+), 35 deletions(-) diff --git a/src/lib/stores/organization.ts b/src/lib/stores/organization.ts index d7916a161..6350efe6d 100644 --- a/src/lib/stores/organization.ts +++ b/src/lib/stores/organization.ts @@ -9,6 +9,7 @@ export type Organization = Models.Team> & { budgetAlerts: number[]; paymentMethodId: string; backupPaymentMethodId: string; + billingLimits: Record; billingCurrentInvoiceDate: string; billingNextInvoiceDate: string; billingTrialStartDate?: string; diff --git a/src/routes/console/account/payments/editAddressModal.svelte b/src/routes/console/account/payments/editAddressModal.svelte index 954531528..4001e0cb7 100644 --- a/src/routes/console/account/payments/editAddressModal.svelte +++ b/src/routes/console/account/payments/editAddressModal.svelte @@ -12,7 +12,7 @@ export let show = false; export let selectedAddress: Address; - let zip = parseInt(selectedAddress.postalCode); + let zip = selectedAddress?.postalCode ? parseInt(selectedAddress.postalCode) : null; let options = [ { value: 'US', diff --git a/src/routes/console/project-[project]/settings/usage/[[period]]/+page.svelte b/src/routes/console/project-[project]/settings/usage/[[period]]/+page.svelte index 567e805eb..4677b9008 100644 --- a/src/routes/console/project-[project]/settings/usage/[[period]]/+page.svelte +++ b/src/routes/console/project-[project]/settings/usage/[[period]]/+page.svelte @@ -1,22 +1,36 @@ @@ -40,18 +54,136 @@ - {#if requests} - - {total(requests)} -

Executions

-
- [e.date, e.value])] - } - ]} /> - - {/if} + + Bandwidth +

Calculated for all bandwidth used across your project.

+ + {#if total(requests)} +
+ {total(requests)} + GB +
+ [e.date, e.value])] + } + ]} /> + {:else} + +
+
+
+ {/if} +
+
+ + Active users +

Active users of your project.

+ + {#if total(users)} +
+ {total(users)} + AU +
+ [e.date, e.value])] + } + ]} /> + {:else} + +
+
+
+ {/if} +
+
+ + Function executions +

Calculated for all functions executed in your project.

+ + {#if total(executions)} +
+ {total(executions)} + Executions +
+ [e.date, e.value])] + } + ]} /> + {:else} + +
+
+
+ {/if} +
+
+ + Storage +

Calculated for all storage operations in your project.

+ + {@const size = total(files.data)} + {#if size} +
+ {size} + {files.unit} +
+ + {:else} + +
+
+
+ {/if} +
+
+ + Realtime connections +

+ Calculated for all concurrent connections and messages sent to your project in realtime. +

+ +
+ {total(network)} + Concurrent connections +
+
+
+

+ Metrics are estimates updated every 24 hours and may not accurately reflect your invoice. +

diff --git a/src/routes/console/project-[project]/settings/usage/[[period]]/+page.ts b/src/routes/console/project-[project]/settings/usage/[[period]]/+page.ts index 0c402d49f..dee7ea151 100644 --- a/src/routes/console/project-[project]/settings/usage/[[period]]/+page.ts +++ b/src/routes/console/project-[project]/settings/usage/[[period]]/+page.ts @@ -6,17 +6,17 @@ import { error } from '@sveltejs/kit'; export const load: PageLoad = async ({ params }) => { try { const response = await sdk.forProject.project.getUsage(params.period ?? '30d'); - + console.log(response); return { - // range: response string; - requests: response.requests as unknown as Models.Metric[], - network: response.network as unknown as Models.Metric[], - executions: response.executions as unknown as Models.Metric[], - documents: response.documents as unknown as Models.Metric[], - databases: response.databases as unknown as Models.Metric[], - users: response.users as unknown as Models.Metric[], - storage: response.storage as unknown as Models.Metric[], - buckets: response.buckets as unknown as Models.Metric[] + range: response.range, + bucketsTotal: response.bucketsTotal as unknown as Models.Metric[], + filesTotal: response.filesStorage as unknown as Models.Metric[], + databasesTotal: response.databasesTotal as unknown as Models.Metric[], + documentsTotal: response.documentsTotal as unknown as Models.Metric[], + executionsTotal: response.executionsTotal as unknown as Models.Metric[], + networkTotal: response.network as unknown as Models.Metric[], + requestsTotal: response.requestsTotal as unknown as Models.Metric[], + usersTotal: response.usersTotal as unknown as Models.Metric[] }; } catch (e) { throw error(e.code, e.message);