cityssm/mini-shop-db

View on GitHub
index.ts

Summary

Maintainability
A
0 mins
Test Coverage
import exitHook from "exit-hook" ;
import { releaseAll as pool_releaseAll } from "@cityssm/mssql-multi-pool";

import type * as types from "./types";
import type { config as MSSQLConfig } from "mssql";

/*
 * Config
 */

let config: types.MiniShopConfig = {
  products: {},
  fees: {}
};

export const setConfig = (miniShopConfig: types.MiniShopConfig) => {
  config = miniShopConfig;
}

export const setMSSQLConfig = (mssqlConfig: MSSQLConfig) => {
  config.mssqlConfig = mssqlConfig;
};

export const setOrderNumberFunction = (orderNumberFunction: () => string) => {
  config.orderNumberFunction = orderNumberFunction;
};

export const setFees = (fees: { [feeName: string]: types.Fee }) => {
  config.fees = fees;
}

/*
 * Update Functions
 */

import { _acknowledgeOrderItem } from "./acknowledgeOrderItem.js";
export const acknowledgeOrderItem = async (orderID: number | string, itemIndex: number | string, acknowledgeValues: {
  acknowledgedUser: string;
  acknowledgedTime?: Date;
}) => {
  return await _acknowledgeOrderItem(config, orderID, itemIndex, acknowledgeValues);
}

import { _createOrder } from "./createOrder.js";
export const createOrder = async (shippingForm: types.ShippingForm) => {
  return await _createOrder(config, shippingForm);
};

import { _deleteOrder, DeleteDetails } from "./deleteOrder.js";
export const deleteOrder = async (orderID: number, deleteDetails: DeleteDetails) => {
  return await _deleteOrder(config, orderID, deleteDetails);
};

import { _unacknowledgeOrderItem } from "./unacknowledgeOrderItem.js";
export const unacknowledgeOrderItem = async (orderID: number | string, itemIndex: number | string) => {
  return await _unacknowledgeOrderItem(config, orderID, itemIndex);
};

import { _updateOrderAsPaid } from "./updateOrderAsPaid.js";
export const updateOrderAsPaid = async (validOrder: types.StoreValidatorReturn) => {
  return await _updateOrderAsPaid(config, validOrder);
};

import { _updateOrderAsRefunded, RefundDetails } from "./updateOrderAsRefunded.js";
export const updateOrderAsRefunded = async (orderNumber: string, orderSecret: string, refundDetails: RefundDetails) => {
  return await _updateOrderAsRefunded(config, orderNumber, orderSecret, refundDetails);
};

/*
 * Read Only Functions
 */

import { _getOrder } from "./getOrder.js";
export const getOrder = async (orderNumber: string, orderSecret: string, orderIsPaid: boolean, enforceExpiry = true) => {
  return await _getOrder(config, orderNumber, orderSecret, orderIsPaid, enforceExpiry);
};

import { _getOrderItem } from "./getOrderItem.js";
export const getOrderItem = async (orderID: number | string, itemIndex: number | string) => {
  return await _getOrderItem(config, orderID, itemIndex);
};

import { _getOrderNumberBySecret } from "./getOrderNumberBySecret.js";
export const getOrderNumberBySecret = async (orderSecret: string) => {
  return await _getOrderNumberBySecret(config, orderSecret);
};

import { _getOrders, GetOrderFilters } from "./getOrders.js";
export const getOrders = async (filters: GetOrderFilters) => {
  return await _getOrders(config, filters);
};

import { _isOrderFoundAndPaid } from "./isOrderFoundAndPaid.js";
export const isOrderFoundAndPaid = async (orderNumber: string, orderSecret: string) => {
  return await _isOrderFoundAndPaid(config, orderNumber, orderSecret);
};

export const releaseAll = () => {
  pool_releaseAll();
}

if (process) {
  exitHook(releaseAll);
}