1.0.1 • Published 2 years ago

compact-sequelize v1.0.1

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

compact-sequelize

npm install compact-sequelize

Overview

Order.findAll({
  include: [
    { model: User, attributes: ["email"] },
    {
      model: OrderDetail,
      include: [
        {
          model: Product,
          include: { model: Brand, attributes: ["name"] },
          include: { model: Gender, attributes: ["name"] },
          include: { model: Category, attributes: ["name"] },
        },
        { model: Size, attributes: ["name"] }
      ]
    }
  ],
})

and we get a json like this:

[{
  "id": 42,
  "date": "2022-01-27T07:54:02.571Z",
  "status": "carrito",
  "userId": 12,
  "user": {
    "email": "andres@sportbase.com"
  },
  "OrderDetails": [
    {
      "id": 197,
      "price": 10999,
      "quantity": 2,
      "orderId": 42,
      "productId": "c2fcdddd-2ea4-465a-939a-63d91bb60aa0",
      "sizeId": 12,
      "product": {
        "id": "c2fcdddd-2ea4-465a-939a-63d91bb60aa0",
        "name": "Adidas jacket Firebird",
        "price": 10999,
        "genderId": 2,
        "brandId": 1,
        "brand": {
          "name": "Adidas"
        },
        "gender": {
          "name": "Woman"
        },
        "categories": [
          {
            "name": "jacket",
            "product_category": {
              "createdAt": "2022-01-20T02:05:12.939Z",
              "updatedAt": "2022-01-20T02:05:12.939Z",
              "productId": "c2fcdddd-2ea4-465a-939a-63d91bb60aa0",
              "categoryId": 5
            }
          },
          {
            "name": "sportswear",
            "product_category": {
              "createdAt": "2022-01-20T02:05:12.939Z",
              "updatedAt": "2022-01-20T02:05:12.939Z",
              "productId": "c2fcdddd-2ea4-465a-939a-63d91bb60aa0",
              "categoryId": 9
            }
          }
        ]
      },
      "size": {
        "name": "XL"
      }
    }
  ]
}]
const { compact } = require('compact-sequelize');
const { Order, User, OrderDetail, Size, Product, Gender, Brand, Category } = require("./src/db.js");

const getOrders = async () => {

  const orders = compact(await Order.findAll({
    include: [
      { model: User, attributes: ["email"] },
      {
        model: OrderDetail,
        include: [
          {
            model: Product,
            include: { model: Gender, attributes: ["name"] },
            include: { model: Brand, attributes: ["name"] },
            include: { model: Category, attributes: ["name"] }
          },
          { model: Size, attributes: ["name"] }
        ]
      }
    ],
  }));

  return orders;
}
{
  "id": 42,
  "date": "2022-01-27T07:54:02.571Z",
  "userId": 12,
  "user": "andres@sportbase.com",
  "OrderDetails": [
    {
      "id": 197,
      "price": 10999,
      "quantity": 2,
      "orderId": 42,
      "productId": "c2fcdddd-2ea4-465a-939a-63d91bb60aa0",
      "sizeId": 12,
      "product": {
        "id": "c2fcdddd-2ea4-465a-939a-63d91bb60aa0",
        "name": "Adidas jacket Firebird",
        "price": 10999,
        "genderId": 2,
        "brandId": 1,
        "brand": "Adidas",
        "gender": "Woman",
        "categories": [
          "jacket",
          "sportswear"
        ]
      },
      "size": "XL"
    }
  ]
}