--- globs: services/*.ts --- # Services Rules 1. Services MUST contain ALL PostgreSQL queries 2. Services are the ONLY layer allowed to communicate with the database 3. Each service MUST: - Use the pool from [services/database.ts](mdc:services/database.ts) - Implement proper transaction management - Handle errors and logging - Validate data before insertion - Have a clear interface Example of correct service implementation: ```typescript export class MyService { constructor(private pool: Pool) {} async myMethod(): Promise { const client = await this.pool.connect(); try { await client.query("BEGIN"); // ... queries await client.query("COMMIT"); } catch (error) { await client.query("ROLLBACK"); throw error; } finally { client.release(); } } } ``` ❌ FORBIDDEN: - Direct database queries outside services - Raw SQL in API routes - Database logic in components