69 lines
2.0 KiB
TypeScript
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;
|