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
- Frequent 500 Internal Server Errors - Pr...
PROJECT ID: 6951f2xxxxx1ee9e750a REGION: Singapore (sgp.cloud.appwrite.io) PLAN: Pro Our production application experiences **500 Internal Server Errors** mult...
- Issue with Custom SMTP
Hey everyone, I'm facing an issue when updating my Custom SMTP settings on Appwrite Cloud. The UI fails silently (no visual errors), but when checking the cons...
- Problem with Google Workspace at DNS Rec...
Hello, I bought a domain at Namecheap, and Google Workspace used to work there, but now that I switched from Custom DNS to Appwrite's nameservers, it doesn't w...