This commit refactors the project to use a shared Prisma schema and restricts direct database access to the API service.
Key changes:
- Created a new shared package `core/prisma` containing the Prisma schema, generated client, and types.
- Configured the monorepo to use NPM workspaces, including `core/prisma` and all services.
- Updated all services (`api`, `ui`, `mcp`, `agent`, and the background processing service) to depend on `@empresa/prisma-schema`.
- The API service now imports `PrismaClient` from `@empresa/prisma-schema/client`.
- Other services import only types from `@empresa/prisma-schema`.
- Removed redundant Prisma configurations from `api` and the background processing service.
- Updated the background processing service's `sync-empleados.js` to fetch data via an API call instead of direct database access.
- Updated TypeScript configurations (`tsconfig.base.json` and service-specific ones) to support the new structure and path aliases.
- Updated `README.md` to reflect the new architecture and added convenience scripts for Prisma operations.
This change promotes a single source of truth for data models, reduces code duplication, and improves the overall architecture by centralizing database operations within the API service.
I've added a new capability to synchronize employee data from the local database to an external database on a daily basis.
Key changes:
- **`worker/sync-empleados.js`**: This new script:
- Connects to the local Prisma database to fetch `Cliente` records where `empleado` is true.
- Provides clear placeholders and guidance for connecting to an external database (you must configure details like host, credentials, DB type, and table name, and implement specific DB client logic).
- Outlines a conceptual "upsert" logic (update existing, insert new) for the external database.
- Includes extensive comments on configuration, operation, and testing considerations.
- **`worker/cron-worker.js`**:
- I modified this to import and schedule the `syncEmpleadosToExternalDB` function from the new script.
- The synchronization is scheduled to run daily at midnight.
- The existing example 5-second cron job has been commented as an example.
- **Documentation**:
- I added in-code comments to both modified/new files to explain functionality.
- `sync-empleados.js` includes sections on external DB configuration and detailed testing considerations (manual and automated).
You will need to provide the actual connection details and logic for your specific external database system.