added serena to gitignore
This commit is contained in:
parent
d7a78a0bde
commit
efc734ca9e
2 changed files with 6 additions and 134 deletions
7
.gitignore
vendored
7
.gitignore
vendored
|
|
@ -103,4 +103,9 @@ Thumbs.db
|
|||
|
||||
# Turbo
|
||||
.turbo
|
||||
*.tsbuildinfo
|
||||
*.tsbuildinfo
|
||||
|
||||
# AI
|
||||
.serena/
|
||||
.claude/
|
||||
docs/configuration-standardization.md
|
||||
|
|
|
|||
|
|
@ -1,133 +0,0 @@
|
|||
# Configuration Standardization
|
||||
|
||||
## Overview
|
||||
|
||||
The Stock Bot system now uses a unified configuration approach that standardizes how services receive and use configuration. This eliminates the previous confusion between `StockBotAppConfig` and `AppConfig`, providing a single source of truth for all configuration needs.
|
||||
|
||||
## Key Changes
|
||||
|
||||
### 1. Unified Configuration Schema
|
||||
|
||||
The new `UnifiedAppConfig` schema:
|
||||
- Provides both nested (backward compatible) and flat (DI-friendly) database configurations
|
||||
- Automatically standardizes service names to kebab-case
|
||||
- Handles field name mappings (e.g., `ilpPort` → `influxPort`)
|
||||
- Ensures all required fields are present for DI system
|
||||
|
||||
### 2. Service Name Standardization
|
||||
|
||||
All service names are now standardized to kebab-case:
|
||||
- `dataIngestion` → `data-ingestion`
|
||||
- `dataPipeline` → `data-pipeline`
|
||||
- `webApi` → `web-api`
|
||||
|
||||
This happens automatically in:
|
||||
- `initializeStockConfig()` when passing service name
|
||||
- `ServiceApplication` constructor
|
||||
- `toUnifiedConfig()` transformation
|
||||
|
||||
### 3. Single Configuration Object
|
||||
|
||||
Services now use a single configuration object (`this.config`) that contains:
|
||||
- All service-specific settings
|
||||
- Database configurations (both nested and flat)
|
||||
- Service metadata including standardized name
|
||||
- All settings required by the DI system
|
||||
|
||||
## Migration Guide
|
||||
|
||||
### For Service Implementations
|
||||
|
||||
Before:
|
||||
```typescript
|
||||
const app = new ServiceApplication(
|
||||
config,
|
||||
{
|
||||
serviceName: 'web-api',
|
||||
// other options
|
||||
}
|
||||
);
|
||||
|
||||
// In container factory
|
||||
const configWithService = {
|
||||
...this.config,
|
||||
service: { name: this.serviceConfig.serviceName }
|
||||
};
|
||||
```
|
||||
|
||||
After:
|
||||
```typescript
|
||||
const app = new ServiceApplication(
|
||||
config, // Config already has service.serviceName
|
||||
{
|
||||
serviceName: 'web-api', // Still needed for logger
|
||||
// other options
|
||||
}
|
||||
);
|
||||
|
||||
// In container factory
|
||||
// No manual service name addition needed
|
||||
this.container = await containerFactory(this.config);
|
||||
```
|
||||
|
||||
### For DI Container Usage
|
||||
|
||||
Before:
|
||||
```typescript
|
||||
const serviceName = config.service?.name || 'unknown';
|
||||
// Had to handle different naming conventions
|
||||
```
|
||||
|
||||
After:
|
||||
```typescript
|
||||
const serviceName = config.service?.serviceName || config.service?.name || 'unknown';
|
||||
// Standardized kebab-case name is always available
|
||||
```
|
||||
|
||||
### For Configuration Files
|
||||
|
||||
The configuration structure remains the same, but the system now ensures:
|
||||
- Service names are standardized automatically
|
||||
- Database configs are available in both formats
|
||||
- All required fields are properly mapped
|
||||
|
||||
## Benefits
|
||||
|
||||
1. **Simplicity**: One configuration object with all necessary information
|
||||
2. **Consistency**: Standardized service naming across the system
|
||||
3. **Type Safety**: Unified schema provides better TypeScript support
|
||||
4. **Backward Compatibility**: Old configuration formats still work
|
||||
5. **Reduced Complexity**: No more manual config transformations
|
||||
|
||||
## Technical Details
|
||||
|
||||
### UnifiedAppConfig Schema
|
||||
|
||||
```typescript
|
||||
export const unifiedAppSchema = baseAppSchema.extend({
|
||||
// Flat database configs for DI system
|
||||
redis: dragonflyConfigSchema.optional(),
|
||||
mongodb: mongodbConfigSchema.optional(),
|
||||
postgres: postgresConfigSchema.optional(),
|
||||
questdb: questdbConfigSchema.optional(),
|
||||
}).transform((data) => {
|
||||
// Auto-standardize service name
|
||||
// Sync nested and flat configs
|
||||
// Handle field mappings
|
||||
});
|
||||
```
|
||||
|
||||
### Service Registry
|
||||
|
||||
The `SERVICE_REGISTRY` now includes aliases for different naming conventions:
|
||||
```typescript
|
||||
'web-api': { db: 3, ... },
|
||||
'webApi': { db: 3, ... }, // Alias for backward compatibility
|
||||
```
|
||||
|
||||
## Future Improvements
|
||||
|
||||
1. Remove service name aliases after full migration
|
||||
2. Deprecate old configuration formats
|
||||
3. Add configuration validation at startup
|
||||
4. Provide migration tooling for existing services
|
||||
Loading…
Add table
Add a link
Reference in a new issue