import { Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';
import { tenantStore } from './tenant.store';

@Injectable()
export class TenantMiddleware implements NestMiddleware {
    use(req: Request, res: Response, next: NextFunction) {
        const tenantId = req.headers['x-tenant-id'] as string;

        // Wrap the execution in the tenant store context
        // Initial values might be empty or partial until the AuthGuard validates them
        tenantStore.run({ tenantId: tenantId || '' }, () => {
            next();
        });
    }
}
