First commit: Tryton client using TypeScript
This commit is contained in:
172
examples/basic-connection.ts
Normal file
172
examples/basic-connection.ts
Normal file
@@ -0,0 +1,172 @@
|
||||
/**
|
||||
* Ejemplo de conexión básica con Tryton
|
||||
*
|
||||
* Este ejemplo demuestra cómo:
|
||||
* 1. Conectarse al servidor Tryton
|
||||
* 2. Obtener información del usuario y el token de sesión
|
||||
* 3. Buscar terceros (party.party) y mostrar sus nombres
|
||||
*
|
||||
* Instrucciones de uso:
|
||||
* 1. Instala las dependencias: npm install
|
||||
* 2. Compila el proyecto: npm run build
|
||||
* 3. Edita las variables de configuración abajo con tus datos de conexión
|
||||
* 4. Ejecuta: node dist/examples/basic-connection.js
|
||||
*/
|
||||
|
||||
import { TrytonClient } from "../client";
|
||||
|
||||
// ====================================================
|
||||
// CONFIGURACIÓN - EDITA ESTOS VALORES CON TUS DATOS
|
||||
// ====================================================
|
||||
const config = {
|
||||
hostname: "https://demo7.6.tryton.org", // Servidor demo con HTTPS
|
||||
port: 8000, // Puerto del servidor Tryton (generalmente 8000)
|
||||
database: "demo7.6", // Base de datos demo
|
||||
username: "admin", // Usuario demo
|
||||
password: "admin", // Contraseña demo
|
||||
language: "es", // Idioma (es, en, etc.)
|
||||
options: {
|
||||
verbose: true, // Mostrar información detallada de conexión
|
||||
timeout: 30000, // Timeout en milisegundos
|
||||
},
|
||||
};
|
||||
|
||||
// Verificar que se han completado los datos de configuración
|
||||
function validateConfig() {
|
||||
const requiredFields: (keyof typeof config)[] = [
|
||||
"hostname",
|
||||
"database",
|
||||
"username",
|
||||
"password",
|
||||
];
|
||||
const missingFields = requiredFields.filter((field) => !config[field]);
|
||||
|
||||
if (missingFields.length > 0) {
|
||||
console.error(
|
||||
"❌ Error: Faltan los siguientes campos de configuración:"
|
||||
);
|
||||
missingFields.forEach((field) => console.error(` - ${field}`));
|
||||
console.error(
|
||||
"\n💡 Edita este archivo y completa la configuración antes de ejecutar."
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// Interfaz para los terceros (party.party)
|
||||
interface Party {
|
||||
id: number;
|
||||
name: string;
|
||||
code?: string;
|
||||
active: boolean;
|
||||
lang?: string;
|
||||
}
|
||||
|
||||
async function main() {
|
||||
console.log("🚀 Iniciando ejemplo de conexión con Tryton...\n");
|
||||
|
||||
// Validar configuración
|
||||
validateConfig();
|
||||
|
||||
// Crear cliente
|
||||
console.log("📡 Creando cliente Tryton...");
|
||||
const client = new TrytonClient(config);
|
||||
|
||||
try {
|
||||
// Conectar al servidor
|
||||
console.log("🔗 Conectando al servidor...");
|
||||
const connected = await client.connect();
|
||||
|
||||
if (!connected) {
|
||||
throw new Error("No se pudo establecer la conexión");
|
||||
}
|
||||
|
||||
console.log("✅ Conexión exitosa!\n");
|
||||
|
||||
// ====================================================
|
||||
// INFORMACIÓN DEL USUARIO Y SESIÓN
|
||||
// ====================================================
|
||||
console.log("👤 INFORMACIÓN DEL USUARIO");
|
||||
console.log("=".repeat(40));
|
||||
|
||||
// Mostrar información básica del usuario
|
||||
console.log(`Usuario: ${config.username}`);
|
||||
console.log(`Base de datos: ${config.database}`);
|
||||
console.log(`Servidor: ${config.hostname}:${config.port}`);
|
||||
|
||||
// Mostrar token de sesión
|
||||
const sessionToken = client.getSession();
|
||||
console.log(`Token de sesión: ${sessionToken}`);
|
||||
console.log("");
|
||||
|
||||
// ====================================================
|
||||
// BÚSQUEDA DE TERCEROS
|
||||
// ====================================================
|
||||
console.log("🏢 LISTA DE TERCEROS");
|
||||
console.log("=".repeat(40));
|
||||
|
||||
// Buscar todos los terceros activos (limitado a 20 para el ejemplo)
|
||||
console.log("Buscando terceros...");
|
||||
const partiesData = await client.searchRead<Party>(
|
||||
"party.party", // Modelo de terceros
|
||||
[], // Dominio: todos los terceros (sin filtros)
|
||||
["id", "name", "code"], // Campos a obtener
|
||||
0, // Offset
|
||||
20 // Límite de resultados
|
||||
// Sin parámetro order
|
||||
);
|
||||
|
||||
if (partiesData.length === 0) {
|
||||
console.log("❌ No se encontraron terceros.");
|
||||
} else {
|
||||
console.log(`✅ Se encontraron ${partiesData.length} terceros:\n`);
|
||||
|
||||
// Mostrar lista de terceros
|
||||
partiesData.forEach((party, index) => {
|
||||
const code = party.code ? ` (${party.code})` : "";
|
||||
console.log(
|
||||
`${(index + 1).toString().padStart(2)}. ${
|
||||
party.name
|
||||
}${code}`
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
console.log("\n🎉 ¡Ejemplo completado exitosamente!");
|
||||
} catch (error) {
|
||||
console.error("❌ Error durante la ejecución:");
|
||||
const errorMessage =
|
||||
error instanceof Error ? error.message : String(error);
|
||||
console.error(errorMessage);
|
||||
|
||||
if (config.options.verbose && error instanceof Error && error.stack) {
|
||||
console.error("\nStack trace:");
|
||||
console.error(error.stack);
|
||||
}
|
||||
|
||||
// Sugerencias de solución de problemas
|
||||
console.error("\n💡 Posibles soluciones:");
|
||||
console.error(" - Verifica que el servidor Tryton esté ejecutándose");
|
||||
console.error(" - Confirma que los datos de conexión sean correctos");
|
||||
console.error(
|
||||
" - Asegúrate de que el usuario tenga permisos adecuados"
|
||||
);
|
||||
console.error(" - Verifica la conectividad de red al servidor");
|
||||
|
||||
process.exit(1);
|
||||
} finally {
|
||||
// Cerrar la conexión si está abierta
|
||||
if (client && client.isConnected) {
|
||||
console.log("\n🔌 Cerrando conexión...");
|
||||
client.close();
|
||||
console.log("\n✅ Conexión cerrada.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Ejecutar el ejemplo si se llama directamente
|
||||
if (require.main === module) {
|
||||
main().catch(console.error);
|
||||
}
|
||||
|
||||
export { main };
|
||||
Reference in New Issue
Block a user