stock-bot/libs/postgres-client/README.md
2025-06-09 22:55:51 -04:00

82 lines
2.3 KiB
Markdown

# PostgreSQL Client Library
A comprehensive PostgreSQL client library for the Stock Bot trading platform, designed for operational data, transactions, and relational queries.
## Features
- **Connection Pooling**: Robust connection pool management
- **Type Safety**: Full TypeScript support with typed queries
- **Transaction Support**: Multi-statement transactions with rollback
- **Schema Management**: Database schema validation and migrations
- **Query Builder**: Fluent query building interface
- **Health Monitoring**: Connection health monitoring and metrics
- **Performance Tracking**: Query performance monitoring and optimization
## Usage
```typescript
import { PostgreSQLClient } from '@stock-bot/postgres-client';
// Initialize client
const pgClient = new PostgreSQLClient();
await pgClient.connect();
// Execute a query
const users = await pgClient.query('SELECT * FROM users WHERE active = $1', [true]);
// Use query builder
const trades = await pgClient
.select('*')
.from('trades')
.where('symbol', '=', 'AAPL')
.orderBy('created_at', 'DESC')
.limit(10)
.execute();
// Execute in transaction
await pgClient.transaction(async (tx) => {
await tx.query('INSERT INTO trades (...) VALUES (...)', []);
await tx.query('UPDATE portfolio SET balance = balance - $1', [amount]);
});
```
## Database Schemas
The client provides typed access to the following schemas:
- **trading**: Core trading operations (trades, orders, positions)
- **strategy**: Strategy definitions and performance
- **risk**: Risk management and compliance
- **audit**: Audit trails and logging
## Configuration
Configure using environment variables:
```env
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DATABASE=stockbot
POSTGRES_USERNAME=stockbot
POSTGRES_PASSWORD=your_password
```
## Query Builder
The fluent query builder supports:
- SELECT, INSERT, UPDATE, DELETE operations
- Complex WHERE conditions with AND/OR logic
- JOINs (INNER, LEFT, RIGHT, FULL)
- Aggregations (COUNT, SUM, AVG, etc.)
- Subqueries and CTEs
- Window functions
## Health Monitoring
The client includes built-in health monitoring:
```typescript
const health = await pgClient.getHealth();
console.log(health.status); // 'healthy' | 'degraded' | 'unhealthy'
```