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
- Customize phone otp template
Hii..is there any way to customize phone otp template in 1.8 self hosted version? Also may i know where is the phone otp message template so that i can apply fo...
- We are seeking an N8n expert to automate...
We are seeking an N8n expert to automate workflows through AI integration. We are looking to assign this task to someone who has passed a rigorous screening pro...
- Missing scope after OAuth login
I want to get the current user with account.get after an OAuth login like Google but I always GET https://cloud.appwrite.io/v1/account 401 (Unauthorized) User (...