From 0d1b06d87c57e61faf1cc439e5b37a61e28ef1cc Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Sun, 20 Jul 2025 10:52:47 +0200 Subject: [PATCH] Update Database.svelte --- .../components/admin/Settings/Database.svelte | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/src/lib/components/admin/Settings/Database.svelte b/src/lib/components/admin/Settings/Database.svelte index de411b866e..92c3c71066 100644 --- a/src/lib/components/admin/Settings/Database.svelte +++ b/src/lib/components/admin/Settings/Database.svelte @@ -7,6 +7,7 @@ import { config, user } from '$lib/stores'; import { toast } from 'svelte-sonner'; import { getAllUserChats } from '$lib/apis/chats'; + import { getAllUsers } from '$lib/apis/users'; import { exportConfig, importConfig } from '$lib/apis/configs'; const i18n = getContext('i18n'); @@ -20,6 +21,41 @@ saveAs(blob, `all-chats-export-${Date.now()}.json`); }; + const exportUsers = async () => { + const users = await getAllUsers(localStorage.token); + + const headers = [ + 'id', + 'name', + 'email', + 'role', + 'profile_image_url', + 'last_active_at', + 'updated_at', + 'created_at', + 'api_key', + 'settings', + 'info' + ]; + + const csv = [ + headers.join(','), + ...users.users.map((user) => { + return headers + .map((header) => { + if (header === 'settings' || header === 'info') { + return JSON.stringify(user[header]); + } + return user[header]; + }) + .join(','); + }) + ].join('\n'); + + const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }); + saveAs(blob, 'users.csv'); + }; + onMount(async () => { // permissions = await getUserPermissions(localStorage.token); }); @@ -180,6 +216,32 @@ {$i18n.t('Export All Chats (All Users)')} + + {/if}