All files / utils/backend shiftData.ts

0% Statements 0/32
0% Branches 0/1
0% Functions 0/1
0% Lines 0/32

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 49 50 51 52 53 54 55                                                                                                             
import {
  GetObjectCommand, S3Client
} from '@aws-sdk/client-s3';
 
import { getLogger } from '@/utils/common/logger';
 
const logger = getLogger('utils/backend/shiftData');
 
const s3 = new S3Client();
 
export const SHIFT_S3_BUCKET = process.env.COSTS_BUCKET;
export const SHIFT_S3_KEY = 'shift-data.json';
 
export const shiftNameMappings: { [key: string]: string } = {
  'Baca Grande-Crestone Ambulance': 'EMS',
  'Baca Fire': 'Fire',
  'NSCAD': 'EMS',
};
 
export interface ShiftData {
  people: {
    [id: string]: string;
  };
  shifts: {
    id: string;
    start: number;
    end: number;
    department: string;
  }[];
}
 
export async function getShiftData(): Promise<ShiftData> {
  try {
    const rawData = await s3.send(new GetObjectCommand({
      Bucket: SHIFT_S3_BUCKET,
      Key: SHIFT_S3_KEY,
    }));
 
    if (typeof rawData.Body === 'undefined') {
      return {
        people: {},
        shifts: [],
      };
    }
 
    return JSON.parse(await rawData?.Body.transformToString('utf-8')) as ShiftData;
  } catch (e) {
    logger.error('Failed to get cached alarm data', e);
    return {
      people: {},
      shifts: [],
    };
  }
}