Files
planetposen-backend/src/webserver/server.ts

76 lines
2.8 KiB
TypeScript

import express from "express";
import { createServer } from "http";
// services
import logger from "../logger";
import { setupCartWebsocketServer } from "./websocketCartServer";
// controllers
// const TokenController = require(`${__controllers}/tokenController`);
import OrderController from "./controllers/orderController";
import ProductController from "./controllers/productController";
import WarehouseController from "./controllers/warehouseController";
import StripePaymentController from "./controllers/stripePaymentController";
import LoginController from "./controllers/loginController";
// middleware
import httpContext from "express-http-context";
import setupCORS from "./middleware/setupCORS";
import setupHeaders from "./middleware/setupHeaders";
import getOrSetCookieForClient from "./middleware/getOrSetCookieForClient";
const app = express();
const port = process.env.PORT || 30010;
app.use(httpContext.middleware);
app.use(setupCORS);
app.use(setupHeaders);
app.use(getOrSetCookieForClient);
const router = express.Router();
router.use(express.json());
router.post("/login", LoginController.login);
router.post("/logout", LoginController.logout);
router.get("/products", ProductController.getAll);
router.post("/product", ProductController.add);
router.get("/product/:product_id", ProductController.getById);
router.post("/product/:product_id/sku", ProductController.addSku);
router.patch("/product/:product_id/sku/:sku_id", ProductController.updateSku);
router.delete("/product/:product_id/sku/:sku_id", ProductController.deleteSku);
router.post(
"/product/:product_id/sku/:sku_id/default_price",
ProductController.setSkuDefaultPrice
);
router.get("/orders", OrderController.getAll);
router.post("/order", OrderController.createOrder);
router.get("/order/:order_id", OrderController.get);
router.get("/order/:order_id/status", OrderController.getOrderStatus);
router.get("/warehouse", WarehouseController.getAll);
router.get("/warehouse/:productId", WarehouseController.getProduct);
// router.get("/api/order/:id", OrderController.getOrderById);
// router.post("/api/order/:id/cancel", OrderController.cancelOrder);
// router.post("/api/order/:id/extend", OrderController.extendOrder);
router.post("/payment/stripe", StripePaymentController.create);
router.post("/webhook/stripe", StripePaymentController.updatePayment);
// router.get("/api/payment/vipps/token", VippsTokenController);
// router.get("/api/payment/:id/details", VippsPaymentController.getPaymentDetails);
// router.post(
// "/api/payment/callback/v2/payments/:id",
// VippsPaymentController.updatePayment
// );
router.get("/", (req, res) => res.send("hello"));
app.use("/api", router);
const server = createServer(app);
server.listen(port, () => logger.info(`Server started, listening at :${port}`));
setupCartWebsocketServer(server);