All files / approval-engine-2/domain iab-event-handler.ts

0% Statements 0/14
100% Branches 0/0
0% Functions 0/3
0% Lines 0/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48                                                                                               
import { autoInjectable, inject } from "tsyringe";
import { tokens } from "../../registry/tokens.js";
 
import type { Logger } from "pino";
import { RedisIABAssetStore } from "../store/redis-iab-asset.store.js";
 
@autoInjectable()
class IABEventHandler {
  constructor(
    private readonly iabAssetRepository: RedisIABAssetStore,
    @inject(tokens.Logger) private readonly logger: Logger,
  ) {}
 
  async getLastOffsetForPartition(
    partition: number,
  ): Promise<[number, string]> {
    try {
      const [part, offset] =
        await this.iabAssetRepository.getLastOffsetForPartition(partition);
      return [part, offset];
    } catch (error) {
      this.logger.error(
        { err: error, partition },
        "Error getting last offset for partition",
      );
      throw error;
    }
  }
 
  async getAllPartitionsAndOffsets(): Promise<
    { partition: number; offset: string }[]
  > {
    try {
      const partitionsAndOffsets =
        await this.iabAssetRepository.getAllPartitionsAndOffsets();
      return partitionsAndOffsets;
    } catch (error) {
      this.logger.error(
        { err: error },
        "Error getting all partitions and offsets",
      );
      throw error;
    }
  }
}
 
export { IABEventHandler };