fixed some some mongdb stuff, and added hide objects

This commit is contained in:
Boki 2025-06-21 07:33:47 -04:00
parent 8edd78a341
commit a0e1593af9
6 changed files with 37 additions and 12 deletions

3
.env
View file

@ -4,7 +4,8 @@
# Core Application Settings
NODE_ENV=development
LOG_LEVEL=error
LOG_LEVEL=warn
LOG_HIDE_OBJECT=true
# Data Service Configuration
DATA_SERVICE_PORT=2001

View file

@ -1,5 +1,5 @@
// Framework imports
import { initializeConfig } from '@stock-bot/config';
import { initializeServiceConfig } from '@stock-bot/config';
import { Hono } from 'hono';
import { cors } from 'hono/cors';
// Library imports
@ -12,7 +12,7 @@ import { ProxyManager } from '@stock-bot/utils';
// Local imports
import { exchangeRoutes, healthRoutes, queueRoutes } from './routes';
const config = initializeConfig();
const config = initializeServiceConfig();
console.log('Data Service Configuration:', JSON.stringify(config, null, 2));
const serviceConfig = config.service;
const databaseConfig = config.database;
@ -24,6 +24,7 @@ if (config.log) {
logConsole: true,
logFile: false,
environment: config.environment,
hideObject: config.log.hideObject,
});
}

View file

@ -174,6 +174,7 @@ export class EnvLoader implements ConfigLoader {
// Log mappings (using LOG_ prefix for all)
LOG_LEVEL: ['log', 'level'],
LOG_FORMAT: ['log', 'format'],
LOG_HIDE_OBJECT: ['log', 'hideObject'],
LOG_LOKI_ENABLED: ['log', 'loki', 'enabled'],
LOG_LOKI_HOST: ['log', 'loki', 'host'],
LOG_LOKI_PORT: ['log', 'loki', 'port'],

View file

@ -1,12 +1,12 @@
export * from './base.schema';
export * from './database.schema';
export * from './service.schema';
export * from './provider.schema';
export * from './service.schema';
import { z } from 'zod';
import { baseConfigSchema, environmentSchema } from './base.schema';
import { queueConfigSchema, httpConfigSchema } from './service.schema';
import { providerConfigSchema, webshareProviderConfigSchema } from './provider.schema';
import { httpConfigSchema, queueConfigSchema } from './service.schema';
// Flexible service schema with defaults
const flexibleServiceConfigSchema = z.object({
@ -74,6 +74,7 @@ const flexibleDatabaseConfigSchema = z.object({
const flexibleLogConfigSchema = z.object({
level: z.enum(['trace', 'debug', 'info', 'warn', 'error', 'fatal']).default('info'),
format: z.enum(['json', 'pretty']).default('json'),
hideObject: z.boolean().default(false),
loki: z.object({
enabled: z.boolean().default(false),
host: z.string().default('localhost'),

View file

@ -26,4 +26,5 @@ export interface LoggerConfig {
lokiUser?: string;
lokiPassword?: string;
environment?: string;
hideObject?: boolean;
}

View file

@ -7,19 +7,38 @@ import type { Db } from 'mongodb';
* Provides global access to a single MongoDB connection
*/
let instance: MongoDBClient | null = null;
let initPromise: Promise<MongoDBClient> | null = null;
/**
* Initialize the singleton MongoDB client
*/
export async function connectMongoDB(config?: MongoDBClientConfig): Promise<MongoDBClient> {
if (!instance) {
if (!config) {
throw new Error('MongoDB client not initialized. Call connectMongoDB(config) first.');
}
instance = new MongoDBClient(config);
await instance.connect();
if (instance) {
return instance;
}
if (initPromise) {
return initPromise;
}
if (!config) {
throw new Error('MongoDB client not initialized. Call connectMongoDB(config) first.');
}
initPromise = (async () => {
const client = new MongoDBClient(config);
await client.connect();
instance = client;
return client;
})();
try {
return await initPromise;
} catch (error) {
// Reset promise on error so next call can retry
initPromise = null;
throw error;
}
return instance;
}
/**
@ -59,4 +78,5 @@ export async function disconnectMongoDB(): Promise<void> {
await instance.disconnect();
instance = null;
}
initPromise = null;
}