---
globs: src/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 [src/services/database.ts](mdc:src/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<Result> {
    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 src/services
- Raw SQL in API routes
- Database logic in components
