almeira-web/src/app/actions/entity.ts

69 lines
2.0 KiB
TypeScript

'use server'
import { Client, Databases, ID, Query } from 'node-appwrite';
import { revalidatePath } from 'next/cache';
const ENDPOINT = process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT || 'https://appwrite.almeira.com.co/v1';
const PROJECT_ID = process.env.NEXT_PUBLIC_APPWRITE_PROJECT_ID || '69b84df5003bd8957c5c';
const DATABASE_ID = 'main';
const COLLECTION_ID = 'entity_config';
async function getAdminClient() {
const client = new Client()
.setEndpoint(ENDPOINT)
.setProject(PROJECT_ID)
.setKey(process.env.APPWRITE_API_KEY || '');
return new Databases(client);
}
export async function getEntityConfig() {
try {
const databases = await getAdminClient();
const response = await databases.listDocuments(
DATABASE_ID,
COLLECTION_ID,
[Query.limit(1)]
);
return response.documents[0] || null;
} catch (error) {
console.error('Error fetching entity config:', error);
return null;
}
}
// ALIAS PARA COMPATIBILIDAD CON DASHBOARD
export const getEntity = getEntityConfig;
export async function updateEntityConfig(data: any) {
try {
const databases = await getAdminClient();
const existing = await getEntityConfig();
if (existing) {
const result = await databases.updateDocument(
DATABASE_ID,
COLLECTION_ID,
existing.$id,
data
);
revalidatePath('/');
return result;
} else {
const result = await databases.createDocument(
DATABASE_ID,
COLLECTION_ID,
ID.unique(),
data
);
revalidatePath('/');
return result;
}
} catch (error) {
console.error('Error updating entity config:', error);
throw error;
}
}
// ALIAS PARA COMPATIBILIDAD CON DASHBOARD
export const updateEntity = updateEntityConfig;