Plantillas y su script

This commit is contained in:
David Arranz 2025-11-19 10:50:35 +01:00
parent 2c695ee8a6
commit f8b45618ab
10 changed files with 67 additions and 12 deletions

View File

@ -22,4 +22,6 @@ JWT_ACCESS_EXPIRATION=1h
JWT_REFRESH_EXPIRATION=7d
PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome
PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome
TEMPLATES_PATH=/home/rodax/Documentos/uecko-erp/modules

View File

@ -35,13 +35,6 @@ DB_SYNC_MODE=alter # none | alter | force
# ───────────────────────────────
# Logging de la app
# ───────────────────────────────
LOG_LEVEL=info # error | warn | info | debug
LOG_JSON=false # true para logs en JSON (entornos con agregadores)
# ───────────────────────────────
# Warmup por módulo
# ───────────────────────────────
@ -61,4 +54,10 @@ JWT_REFRESH_EXPIRATION=7d
# ───────────────────────────────
# Otros
# ───────────────────────────────
PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome
PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome
# ───────────────────────────────
# Plantillas
# ───────────────────────────────
TEMPLATES_PATH=/opt/factuges/templates

View File

@ -34,4 +34,6 @@ JWT_SECRET=supersecretkey
JWT_ACCESS_EXPIRATION=1h
JWT_REFRESH_EXPIRATION=7d
PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome
PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome
TEMPLATES_PATH=/opt/factuges/templates

View File

@ -40,6 +40,9 @@ const DB_SYNC_MODE =
// Opcional: timezone para Sequelize (según necesidades)
const APP_TIMEZONE = process.env.APP_TIMEZONE ?? "Europe/Madrid";
// Ruta raíz para plantillas (templates)
const TEMPLATES_PATH = process.env.TEMPLATES_PATH ?? "./templates";
// Proxy (no usáis ahora, pero dejamos la variable por si se activa en el futuro)
const TRUST_PROXY = asNumber(process.env.TRUST_PROXY, 0);
@ -59,6 +62,7 @@ export const ENV = {
DB_SYNC_MODE,
APP_TIMEZONE,
TRUST_PROXY,
TEMPLATES_PATH,
} as const;
export const Flags = {

View File

@ -227,13 +227,21 @@ process.on("uncaughtException", async (error: Error) => {
logger.info(`DB_LOGGING: ${ENV.DB_LOGGING}`);
logger.info(`DB_SYNC_MODE: ${ENV.DB_SYNC_MODE}`);
logger.info(`TEMPLATES_PATH: ${ENV.TEMPLATES_PATH}`);
const database = await tryConnectToDatabase();
// Lógica de inicialización de DB, si procede:
// initStructure(sequelizeConn.connection);
// insertUsers();
await initModules({ app, database, baseRoutePath: API_BASE_PATH, logger });
await initModules({
app,
database,
baseRoutePath: API_BASE_PATH,
logger,
templateRootPath: ENV.TEMPLATES_PATH,
});
// El servidor ya está listo para recibir tráfico
isReady = true;

View File

@ -1,5 +1,7 @@
import { IModuleServer, ModuleParams } from "@erp/core/api";
import type { IModuleServer, ModuleParams } from "@erp/core/api";
import { logger } from "../logger";
import { initModels, registerModels } from "./model-loader";
import { getService, listServices, registerService } from "./service-registry";

View File

@ -1,5 +1,6 @@
import customerInvoicesAPIModule from "@erp/customer-invoices/api";
import customersAPIModule from "@erp/customers/api";
//import verifactuAPIModule from "@erp/verifactu/api";
import { registerModule } from "./lib";

View File

@ -8,6 +8,8 @@
],
"scripts": {
"build": "turbo build",
"build:templates": "bash scripts/build-templates.sh",
"build:api": "bash scripts/build-api.sh rodax --api",
"dev": "turbo dev",
"dev:server": "turbo dev --filter=server",
"dev:client": "turbo dev --filter=client",

31
scripts/build-templates.sh Executable file
View File

@ -0,0 +1,31 @@
#!/usr/bin/env bash
# Fail fast
set -euo pipefail
# Root directory (dir where the script lives, then go up)
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
SOURCE_DIR="$ROOT_DIR/modules"
TARGET_DIR="$ROOT_DIR/apps/server/dist/templates"
echo "[build-templates] Root: $ROOT_DIR"
echo "[build-templates] Source: $SOURCE_DIR"
echo "[build-templates] Target: $TARGET_DIR"
# Ensure target directory exists and is empty
rm -rf "$TARGET_DIR"
mkdir -p "$TARGET_DIR"
# Loop through each package
for module in "$SOURCE_DIR"/*; do
if [ -d "$module/templates" ]; then
module_name=$(basename "$module")
echo "→ Copying templates for module: $module_name"
mkdir -p "$TARGET_DIR/$module_name"
cp -R "$module/templates/." "$TARGET_DIR/$module_name/"
fi
done
echo "[build-templates] Completed."

View File

@ -17,6 +17,10 @@
"inputs": ["$TURBO_DEFAULT$", ".env*"],
"outputs": ["dist/**"]
},
"build:templates": {
"dependsOn": [],
"outputs": ["dist/templates/**"]
},
"clean": {
"cache": false
}