From 4d6ecf009e9de144c7ff1d09eb86a71d8d2e8847 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 11 Oct 2022 12:56:27 +0200 Subject: [PATCH] feat: usage for databases --- src/lib/layout/index.ts | 1 + src/lib/layout/usage.svelte | 141 +++++++++++++++ .../authentication/usage/+page.svelte | 160 ++++------------- .../collection/[collection]/+layout.svelte | 4 + .../collection/[collection]/store.ts | 14 ++ .../[collection]/usage/+page.svelte | 48 ++++++ .../databases/database/[database]/store.ts | 14 ++ .../database/[database]/usage/+page.svelte | 52 +++++- .../project-[project]/databases/store.ts | 16 +- .../databases/usage/+page.svelte | 50 +++++- .../project-[project]/overview/+layout.svelte | 2 +- .../project-[project]/overview/store.ts | 3 +- .../bucket/[bucket]/usage/+page.svelte | 161 ++++-------------- .../storage/usage/+page.svelte | 159 ++++------------- 14 files changed, 433 insertions(+), 392 deletions(-) create mode 100644 src/lib/layout/usage.svelte create mode 100644 src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/usage/+page.svelte diff --git a/src/lib/layout/index.ts b/src/lib/layout/index.ts index 449707740..376a6e632 100644 --- a/src/lib/layout/index.ts +++ b/src/lib/layout/index.ts @@ -10,3 +10,4 @@ export { default as Wizard } from './wizard.svelte'; export { default as WizardStep } from './wizardStep.svelte'; export { default as Breadcrumbs } from './breadcrumbs.svelte'; export { default as Unauthenticated } from './unauthenticated.svelte'; +export { default as Usage, type UsagePeriods } from './usage.svelte'; diff --git a/src/lib/layout/usage.svelte b/src/lib/layout/usage.svelte new file mode 100644 index 000000000..de9f982ef --- /dev/null +++ b/src/lib/layout/usage.svelte @@ -0,0 +1,141 @@ + + + + + +
+

Users

+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+ + {#if count} +
{last(count).value}
+

{countMetadata.title}

+
+ [e.date, e.value])] + } + ]} /> + {/if} + + + + {#if created} +
{total(created)}
+

{createdMetadata.title}

+
+ [e.date, e.value])] + } + ]} /> + {/if} + + + {#if read} +
{total(read)}
+

{createdMetadata.title}

+
+ [e.date, e.value])] + } + ]} /> + {/if} + + + {#if updated} +
{total(updated)}
+

{updatedMetadata.title}

+
+ [e.date, e.value])] + } + ]} /> + {/if} + + + {#if deleted} +
{total(deleted)}
+

{deletedMetadata.title}

+
+ [e.date, e.value])] + } + ]} /> + {/if} + + + diff --git a/src/routes/console/project-[project]/authentication/usage/+page.svelte b/src/routes/console/project-[project]/authentication/usage/+page.svelte index 5e960f3e0..f5e86e672 100644 --- a/src/routes/console/project-[project]/authentication/usage/+page.svelte +++ b/src/routes/console/project-[project]/authentication/usage/+page.svelte @@ -1,133 +1,45 @@ - -
-

Users

-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
- {#if $usersUsage} - - {#if usersCount} -
{last(usersCount).value}
-

Registered users

-
- [e.date, e.value])] - } - ]} /> - {/if} - - - - {#if usersCreate} -
{total(usersCreate)}
-

Users created

-
- [e.date, e.value])] - } - ]} /> - {/if} - - - {#if usersRead} -
{total(usersRead)}
-

Users read

-
- [e.date, e.value])] - } - ]} /> - {/if} - - - {#if usersUpdate} -
{total(usersUpdate)}
-

Users updated

-
- [e.date, e.value])] - } - ]} /> - {/if} - - - {#if usersDelete} -
{total(usersDelete)}
-

Users deleted

-
- [e.date, e.value])] - } - ]} /> - {/if} - - - {/if} - + diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/+layout.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/+layout.svelte index 8115c2396..c21d4def9 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/+layout.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/+layout.svelte @@ -46,6 +46,10 @@ href: `${path}/indexes`, title: 'Indexes' }, + { + href: `${path}/usage`, + title: 'Usage' + }, { href: `${path}/settings`, title: 'Settings' diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/store.ts b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/store.ts index b9e406dfd..35af4cde8 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/store.ts +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/store.ts @@ -116,3 +116,17 @@ export const attributeList = cachedStore< } }; }); + +export const collectionUsage = cachedStore< + Models.UsageCollection, + { + load: (databaseId: string, collectionId: string, range: string) => Promise; + } +>('collectionUsage', function ({ set }) { + return { + load: async (databaseId, range) => { + const usages = await sdkForProject.databases.getCollectionUsage(databaseId, range); + set(usages); + } + }; +}); diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/usage/+page.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/usage/+page.svelte new file mode 100644 index 000000000..a2f1e4d60 --- /dev/null +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/usage/+page.svelte @@ -0,0 +1,48 @@ + + + diff --git a/src/routes/console/project-[project]/databases/database/[database]/store.ts b/src/routes/console/project-[project]/databases/database/[database]/store.ts index a3eb21e8d..69072d890 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/store.ts +++ b/src/routes/console/project-[project]/databases/database/[database]/store.ts @@ -38,3 +38,17 @@ export const database = cachedStore< } }; }); + +export const databaseUsage = cachedStore< + Models.UsageDatabase, + { + load: (databaseId: string, range: string) => Promise; + } +>('databaseUsage', function ({ set }) { + return { + load: async (databaseId, range) => { + const usages = await sdkForProject.databases.getDatabaseUsage(databaseId, range); + set(usages); + } + }; +}); diff --git a/src/routes/console/project-[project]/databases/database/[database]/usage/+page.svelte b/src/routes/console/project-[project]/databases/database/[database]/usage/+page.svelte index 0fdd935f5..91d0c1ec1 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/usage/+page.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/usage/+page.svelte @@ -1,9 +1,47 @@ - - -

Usage

- -
+ diff --git a/src/routes/console/project-[project]/databases/store.ts b/src/routes/console/project-[project]/databases/store.ts index 88256ca12..642b5c471 100644 --- a/src/routes/console/project-[project]/databases/store.ts +++ b/src/routes/console/project-[project]/databases/store.ts @@ -1,6 +1,6 @@ import { sdkForProject } from '$lib/stores/sdk'; -import type { Models } from '@aw-labs/appwrite-console'; import { cachedStore } from '$lib/helpers/cache'; +import type { Models } from '@aw-labs/appwrite-console'; export const databaseList = cachedStore< Models.DatabaseList, @@ -15,3 +15,17 @@ export const databaseList = cachedStore< } }; }); + +export const databasesUsage = cachedStore< + Models.UsageDatabases, + { + load: (range: string) => Promise; + } +>('databasesUsage', function ({ set }) { + return { + load: async (range) => { + const usages = await sdkForProject.databases.getUsage(range); + set(usages); + } + }; +}); diff --git a/src/routes/console/project-[project]/databases/usage/+page.svelte b/src/routes/console/project-[project]/databases/usage/+page.svelte index aa43e6741..bd3049710 100644 --- a/src/routes/console/project-[project]/databases/usage/+page.svelte +++ b/src/routes/console/project-[project]/databases/usage/+page.svelte @@ -1,10 +1,44 @@ - - -

Usage

- - -
+ diff --git a/src/routes/console/project-[project]/overview/+layout.svelte b/src/routes/console/project-[project]/overview/+layout.svelte index 6ebba1fae..d96abb255 100644 --- a/src/routes/console/project-[project]/overview/+layout.svelte +++ b/src/routes/console/project-[project]/overview/+layout.svelte @@ -9,7 +9,7 @@ import { usage, type UsagePeriods } from './store'; import { onMount } from 'svelte'; import { afterNavigate } from '$app/navigation'; - import { DropList, DropListItem } from '$lib/components'; + import { Code, DropList, DropListItem } from '$lib/components'; import { BarChart, LineChart } from '$lib/charts'; import { humanFileSize } from '$lib/helpers/sizeConvertion'; diff --git a/src/routes/console/project-[project]/overview/store.ts b/src/routes/console/project-[project]/overview/store.ts index 013b18a08..17c8ad4a1 100644 --- a/src/routes/console/project-[project]/overview/store.ts +++ b/src/routes/console/project-[project]/overview/store.ts @@ -2,11 +2,10 @@ import { sdkForConsole } from '$lib/stores/sdk'; import { cachedStore } from '$lib/helpers/cache'; import type { Models } from '@aw-labs/appwrite-console'; -export type UsagePeriods = '24h' | '30d' | '90d'; export const usage = cachedStore< Models.UsageProject, { - load: (projectId: string, range: UsagePeriods) => Promise; + load: (projectId: string, range: string) => Promise; } >('projectUsage', function ({ set }) { return { diff --git a/src/routes/console/project-[project]/storage/bucket/[bucket]/usage/+page.svelte b/src/routes/console/project-[project]/storage/bucket/[bucket]/usage/+page.svelte index c1c8f26ee..03c0566db 100644 --- a/src/routes/console/project-[project]/storage/bucket/[bucket]/usage/+page.svelte +++ b/src/routes/console/project-[project]/storage/bucket/[bucket]/usage/+page.svelte @@ -1,136 +1,47 @@ - -
-

Users

-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
- {#if $bucketUsage} - - {#if filesCount} -
{last(filesCount).value}
-

Total Files

-
- [e.date, e.value])] - } - ]} /> - {/if} - - - - {#if filesCreate} -
{total(filesCreate)}
-

Files created

-
- [e.date, e.value])] - } - ]} /> - {/if} - - - {#if filesRead} -
{total(filesRead)}
-

Files read

-
- [e.date, e.value])] - } - ]} /> - {/if} - - - {#if filesUpdate} -
{total(filesUpdate)}
-

Files updated

-
- [e.date, e.value])] - } - ]} /> - {/if} - - - {#if filesDelete} -
{total(filesDelete)}
-

Files deleted

-
- [e.date, e.value])] - } - ]} /> - {/if} - - - {/if} - + diff --git a/src/routes/console/project-[project]/storage/usage/+page.svelte b/src/routes/console/project-[project]/storage/usage/+page.svelte index ffa51a930..615ae59af 100644 --- a/src/routes/console/project-[project]/storage/usage/+page.svelte +++ b/src/routes/console/project-[project]/storage/usage/+page.svelte @@ -1,133 +1,44 @@ - -
-

Users

-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
- {#if $storageUsage} - - {#if bucketsCount} -
{last(bucketsCount).value}
-

Total Buckets

-
- [e.date, e.value])] - } - ]} /> - {/if} - - - - {#if bucketsCreate} -
{total(bucketsCreate)}
-

Buckets created

-
- [e.date, e.value])] - } - ]} /> - {/if} - - - {#if bucketsRead} -
{total(bucketsRead)}
-

Buckets read

-
- [e.date, e.value])] - } - ]} /> - {/if} - - - {#if bucketsUpdate} -
{total(bucketsUpdate)}
-

Buckets updated

-
- [e.date, e.value])] - } - ]} /> - {/if} - - - {#if bucketsDelete} -
{total(bucketsDelete)}
-

Buckets deleted

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