moved most api stuff to web-api and built out a better monitoring solution for web-app

This commit is contained in:
Boki 2025-06-23 09:01:29 -04:00
parent fbff428e90
commit da1c52a841
45 changed files with 2986 additions and 312 deletions

View file

@ -4,19 +4,23 @@
*/
import { initializeStockConfig } from '@stock-bot/stock-config';
import {
ServiceApplication,
createServiceContainerFromConfig,
initializeServices as initializeAwilixServices,
} from '@stock-bot/di';
import { ServiceApplication } from '@stock-bot/di';
import { getLogger } from '@stock-bot/logger';
// Local imports
import { createRoutes } from './routes/create-routes';
import { setupServiceContainer } from './container-setup';
// Initialize configuration with service-specific overrides
const config = initializeStockConfig('webApi');
// Override queue settings for web-api (no workers needed)
if (config.queue) {
config.queue.workers = 0;
config.queue.concurrency = 0;
config.queue.enableScheduledJobs = false;
config.queue.delayWorkerStart = true;
}
console.log('Web API Service Configuration:', JSON.stringify(config, null, 2));
// Create service application
@ -44,9 +48,15 @@ const app = new ServiceApplication(
{
// Custom lifecycle hooks
onContainerReady: (container) => {
// Setup service-specific configuration
const enhancedContainer = setupServiceContainer(config, container);
return enhancedContainer;
// Override queue configuration to disable workers
const config = container.cradle.config;
if (config.queue) {
config.queue.workers = 0;
config.queue.concurrency = 0;
config.queue.enableScheduledJobs = false;
config.queue.delayWorkerStart = true;
}
return container;
},
onStarted: (port) => {
const logger = getLogger('web-api');
@ -57,16 +67,21 @@ const app = new ServiceApplication(
// Container factory function
async function createContainer(config: any) {
const container = createServiceContainerFromConfig(config, {
enableQuestDB: false, // Web API doesn't need QuestDB
enableMongoDB: true,
enablePostgres: true,
enableCache: true,
enableQueue: false, // Web API doesn't need queue processing
enableBrowser: false, // Web API doesn't need browser
enableProxy: false, // Web API doesn't need proxy
});
await initializeAwilixServices(container);
const { ServiceContainerBuilder } = await import('@stock-bot/di');
const container = await new ServiceContainerBuilder()
.withConfig(config)
.withOptions({
enableQuestDB: false, // Disable QuestDB for now
enableMongoDB: true,
enablePostgres: true,
enableCache: true,
enableQueue: true, // Enable for pipeline operations
enableBrowser: false, // Web API doesn't need browser
enableProxy: false, // Web API doesn't need proxy
})
.build(); // This automatically initializes services
return container;
}