From dc6356e4f3e0701d209459508ae17e79b8714a51 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Thu, 18 Jul 2024 18:28:23 +0900 Subject: [PATCH] Update SDK --- .../{usageDatabaseStorage.ts => DBStorage.ts} | 71 +++++++++++++++++-- src/lib/stores/sdk.ts | 4 +- .../usage/[[period]]/+page.svelte | 12 ++++ .../usage/[[period]]/+page.ts | 2 +- .../databases/usage/[[period]]/+page.svelte | 8 +-- .../databases/usage/[[period]]/+page.ts | 2 +- 6 files changed, 86 insertions(+), 13 deletions(-) rename src/lib/sdk/{usageDatabaseStorage.ts => DBStorage.ts} (73%) diff --git a/src/lib/sdk/usageDatabaseStorage.ts b/src/lib/sdk/DBStorage.ts similarity index 73% rename from src/lib/sdk/usageDatabaseStorage.ts rename to src/lib/sdk/DBStorage.ts index 1d23cd3a7..fa0724127 100644 --- a/src/lib/sdk/usageDatabaseStorage.ts +++ b/src/lib/sdk/DBStorage.ts @@ -51,7 +51,7 @@ export type UsageDatabases = { /** * Aggregated total statistics of database storage. */ - databasesStorageTotal: number; + storageTotal: number; /** * Aggregated total statistics of documents per period. */ @@ -67,7 +67,7 @@ export type UsageDatabases = { /** * Aggregated total statistics of database storage per period. */ - databasesStorage: Metric[]; + storage: Metric[]; }; /** @@ -150,7 +150,41 @@ type UsageProject = { databasesStorageBreakdown: MetricBreakdown[]; }; -export class ProjectDBStorage { +/** + * UsageDatabase + */ +export type UsageDatabase = { + /** + * Time range of the usage stats. + */ + range: string; + /** + * Total aggregated number of collections. + */ + collectionsTotal: number; + /** + * Total aggregated number of documents. + */ + documentsTotal: number; + /** + * Total aggregated sum of storage size (in bytes). + */ + storageTotal: number; + /** + * Aggregated number of collections per period. + */ + collections: Metric[]; + /** + * Aggregated number of documents per period. + */ + documents: Metric[]; + /** + * Aggregated sum of storage size (in bytes) per period. + */ + storage: Metric[]; +} + +export class DBStorage { client: Client; constructor(client: Client) { @@ -167,7 +201,7 @@ export class ProjectDBStorage { * @throws {AppwriteException} * @returns {Promise} */ - async getUsage(startDate: string, endDate: string, period?: ProjectUsageRange): Promise { + async getProjectUsage(startDate: string, endDate: string, period?: ProjectUsageRange): Promise { if (typeof startDate === 'undefined') { throw new AppwriteException('Missing required parameter: "startDate"'); } @@ -205,7 +239,7 @@ export class ProjectDBStorage { * @throws {AppwriteException} * @returns {Promise} */ - async getDBUsage(range?: DatabaseUsageRange): Promise { + async getUsage(range?: DatabaseUsageRange): Promise { const apiPath = '/databases/usage'; const payload: Payload = {}; @@ -218,4 +252,31 @@ export class ProjectDBStorage { 'content-type': 'application/json', }, payload); } + + /** + * Get database usage stats + * + * + * @param {string} databaseId + * @param {DatabaseUsageRange} range + * @throws {AppwriteException} + * @returns {Promise} + */ + async getDatabaseUsage(databaseId: string, range?: DatabaseUsageRange): Promise { + if (typeof databaseId === 'undefined') { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + + const apiPath = '/databases/{databaseId}/usage'.replace('{databaseId}', databaseId); + const payload: Payload = {}; + + if (typeof range !== 'undefined') { + payload['range'] = range; + } + + const uri = new URL(this.client.config.endpoint + apiPath); + return await this.client.call('get', uri, { + 'content-type': 'application/json', + }, payload); + } } \ No newline at end of file diff --git a/src/lib/stores/sdk.ts b/src/lib/stores/sdk.ts index 69fd6eb64..3e047c53c 100644 --- a/src/lib/stores/sdk.ts +++ b/src/lib/stores/sdk.ts @@ -24,7 +24,7 @@ import { import { Billing } from '../sdk/billing'; import { Sources } from '$lib/sdk/sources'; import { SpecsFunctions } from '$lib/sdk/functionsSpec'; -import { ProjectDBStorage } from '$lib/sdk/usageDatabaseStorage'; +import { DBStorage } from '$lib/sdk/DBStorage'; const endpoint = VARS.APPWRITE_ENDPOINT ?? `${globalThis?.location?.origin}/v1`; @@ -46,7 +46,7 @@ const sdkForProject = { messaging: new Messaging(clientProject), project: new Project(clientProject), projectApi: new ProjectApi(clientProject), - projectDatabaseStorage: new ProjectDBStorage(clientProject), + DBStorage: new DBStorage(clientProject), storage: new Storage(clientProject), teams: new Teams(clientProject), users: new Users(clientProject), diff --git a/src/routes/console/project-[project]/databases/database-[database]/usage/[[period]]/+page.svelte b/src/routes/console/project-[project]/databases/database-[database]/usage/[[period]]/+page.svelte index f5486b738..559708618 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/usage/[[period]]/+page.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/usage/[[period]]/+page.svelte @@ -7,6 +7,8 @@ $: total = data.collectionsTotal; $: count = data.collections; + $: totalStorage = data.storageTotal; + $: countStorage = data.storage; + + \ No newline at end of file diff --git a/src/routes/console/project-[project]/databases/database-[database]/usage/[[period]]/+page.ts b/src/routes/console/project-[project]/databases/database-[database]/usage/[[period]]/+page.ts index 64b477a48..ada38e463 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/usage/[[period]]/+page.ts +++ b/src/routes/console/project-[project]/databases/database-[database]/usage/[[period]]/+page.ts @@ -7,5 +7,5 @@ export const load: PageLoad = async ({ params }) => { const period = isValueOfStringEnum(DatabaseUsageRange, params.period) ? params.period : DatabaseUsageRange.ThirtyDays; - return sdk.forProject.databases.getDatabaseUsage(params.database, period); + return sdk.forProject.DBStorage.getDatabaseUsage(params.database, period); }; diff --git a/src/routes/console/project-[project]/databases/usage/[[period]]/+page.svelte b/src/routes/console/project-[project]/databases/usage/[[period]]/+page.svelte index 56c9a0bda..b02fd9204 100644 --- a/src/routes/console/project-[project]/databases/usage/[[period]]/+page.svelte +++ b/src/routes/console/project-[project]/databases/usage/[[period]]/+page.svelte @@ -6,8 +6,8 @@ export let data: PageData; $: total = data.databasesTotal; $: count = data.databases; - $: totalStorage = data.databasesStorageTotal; - $: countStorage = data.databasesStorage; + $: totalStorage = data.storageTotal; + $: countStorage = data.storage; diff --git a/src/routes/console/project-[project]/databases/usage/[[period]]/+page.ts b/src/routes/console/project-[project]/databases/usage/[[period]]/+page.ts index df88b1119..e47f3cd74 100644 --- a/src/routes/console/project-[project]/databases/usage/[[period]]/+page.ts +++ b/src/routes/console/project-[project]/databases/usage/[[period]]/+page.ts @@ -9,7 +9,7 @@ export const load: PageLoad = async ({ params }) => { ? params.period : DatabaseUsageRange.ThirtyDays; try { - return sdk.forProject.projectDatabaseStorage.getDBUsage(period); + return sdk.forProject.DBStorage.getUsage(period); } catch (e) { error(e.code, e.message); }