
I have initialised two clients in appwrite one with .setSession()
other with .setKey()
. If have to call the function for creating those clients and get something from it like databses, account, user, storage etc I have used these things in many places so i have to call the function in many places and the function will get triggered everytime the page loads but before i had the exports to databses , account, user, storage now will it consume more resources and cost more time , or is there something i can do ?

prev code
import env from '@/env';
import { Client, Storage, Databases, Users, Avatars } from 'node-appwrite';
let client = new Client();
client
.setEndpoint(env.appwrite.endpoint)
.setProject(env.appwrite.projectId)
.setKey(env.appwrite.apiKey);
;
const databases = new Databases(client);
const avatars = new Avatars(client);
const storage = new Storage(client);
const users = new Users(client);
export { client, databases, users, avatars, storage };

current code
import { SESSION_COOKIE } from '@/const';
import env from '@/env';
import { cookies } from 'next/headers';
import { Client, Storage, Databases, Users, Avatars, Account } from 'node-appwrite';
export async function createSessionClient() {
const client = new Client()
.setEndpoint(env.appwrite.endpoint)
.setProject(env.appwrite.projectId);
const session = cookies().get(SESSION_COOKIE);
if (!session || !session.value) {
throw new Error("No session found");
}
client.setSession(session.value);
return {
get account() {
return new Account(client);
},
get storage() {
return new Storage(client);
},
get databases() {
return new Databases(client);
},
get users() {
return new Users(client);
},
get avatars() {
return new Avatars(client);
},
};
}
export async function createAdminClient() {
const client = new Client()
.setEndpoint(env.appwrite.endpoint)
.setProject(env.appwrite.projectId)
.setKey(env.appwrite.apiKey);
return {
get account() {
return new Account(client);
},
get storage() {
return new Storage(client);
},
get databases() {
return new Databases(client);
},
get users() {
return new Users(client);
},
get avatars() {
return new Avatars(client);
},
};
}
export async function getLoggedInUser() {
try {
const { account } = await createSessionClient()
return await account.get();
} catch (err) {
return null;
}
}
Recommended threads
- Unable to create push providers - FCM or...
Currently unable to create a push provider for FCM or APNS.... https://github.com/appwrite/console/issues/2045 When uploading a file... FCM = Valid file retu...
- Stuck in "deleting"
my parent element have relationship that doesnt exist and its stuck in "deleting", i cant delete it gives me error: Collection with the requested ID could not b...
- Help with 409 Error on Relationship Setu...
I ran into a 409 document_already_exists issue. with AppWrite so I tried to debug. Here's what I've set up: Collection A has 3 attributes and a two-way 1-to-m...
