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}
-
+