82 lines
2.3 KiB
Markdown
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'
|
|
```
|