All files / lib/config/db db.ts

80% Statements 16/20
100% Branches 0/0
40% Functions 2/5
80% Lines 16/20
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  1x 1x 1x     7x           1x 1x 1x 1x 1x 1x 1x 1x                       1x 1x     1x     1x          
import * as AWS from 'aws-sdk';
import {awsConfig, globalConst} from './appVariables';
 
export class CollectionNames {
  public static orders: CollectionNames = new CollectionNames(`${globalConst.stage}_orders`);
  public static quotes: CollectionNames = new CollectionNames(`${globalConst.stage}_quotes`);
  public static users: CollectionNames = new CollectionNames(`${globalConst.stage}_users`);
  public static quotePharmacy: CollectionNames = new CollectionNames(`${globalConst.stage}_quote_pharmacy`);
  public static pharmacySession: CollectionNames = new CollectionNames(`${globalConst.stage}_pharmacy_session`);
  public static pharmacies: CollectionNames = new CollectionNames(`${globalConst.stage}_pharmacies`);
  public static prescriptions: CollectionNames = new CollectionNames(`${globalConst.stage}_prescriptions`);
 
  constructor(public value: string) {
  }
  public toString(): string {
      return this.value;
  }
} 
 
export type DBOptions<T> = {
  connection: T;
  table: CollectionNames;
};

export class DbOptionsFactory {
  constructor(){}
  public createDBOptions(collection: CollectionNames): DBOptions<AWS.DynamoDB.DocumentClient> {
    const options: AWS.DynamoDB.DocumentClient.DocumentClientOptions = awsConfig as AWS.DynamoDB.DocumentClient.DocumentClientOptions;
    const documentClient: AWS.DynamoDB.DocumentClient = new AWS.DynamoDB.DocumentClient(options);
    return {
      connection: documentClient,
      table: collection,
    };
  }
}
 
const unmarshalItem: any = require('dynamodb-marshaler').unmarshalItem;
 
export class DynamoMarshaller {
    public unMarshalItem(item: Object): Object {
        return unmarshalItem(item);
    }
}