import 'dart:developer';

import 'package:angel3_mq/mq.dart';

final class DebugLogger with ConsumerMixin {
  DebugLogger() {
    MQClient.instance.declareExchange(
      exchangeName: 'logs',
      exchangeType: ExchangeType.direct,
    );
    _queueName = MQClient.instance.declareQueue('debug');
  }

  late final String _queueName;

  void startListening() {
    MQClient.instance.bindQueue(
      queueId: _queueName,
      exchangeName: 'logs',
      bindingKey: 'info',
    );
    MQClient.instance.bindQueue(
      queueId: _queueName,
      exchangeName: 'logs',
      bindingKey: 'warning',
    );
    MQClient.instance.bindQueue(
      queueId: _queueName,
      exchangeName: 'logs',
      bindingKey: 'error',
    );
    subscribe(
      queueId: _queueName,
      callback: (Message message) {
        log('Debug Logger recieved: ${message.payload}');
      },
    );
  }
}
