Commit 0c45d7c9 authored by Fauzi Fadhillah's avatar Fauzi Fadhillah
Browse files

Merge commit '13406285' into v3.1.5

parents 1455c533 13406285
Loading
Loading
Loading
Loading
+54 −12
Original line number Diff line number Diff line
@@ -5,16 +5,22 @@ const helpers_1 = require("../helpers");
const sequelize_cache_1 = require("./sequelize-cache");
const sequelize_typescript_1 = require("sequelize-typescript");
async function invalidateCache(model, options, modelClass) {
    if (sequelize_cache_1.SequelizeCache.showLog) {
        const previousModel = { ...model['dataValues'], ...(0, helpers_1.circularToJSON)(model['_previousDataValues']) };
        sequelize_cache_1.SequelizeCache.logging(previousModel);
    }
    if (options?.transaction) {
        options.transaction.afterCommit(() => {
            invalidationCache(previousModel, modelClass);
            invalidationCache({
                [modelClass['primaryKeyAttribute']]: model['_previousDataValues']?.[modelClass['primaryKeyAttribute']],
            }, modelClass);
        });
        sequelize_cache_1.SequelizeCache.logging('hooks after update transaction');
        return model;
    }
    invalidationCache(previousModel, modelClass);
    invalidationCache({
        [modelClass['primaryKeyAttribute']]: model['_previousDataValues']?.[modelClass['primaryKeyAttribute']],
    }, modelClass);
    sequelize_cache_1.SequelizeCache.logging('hooks after update');
    return model;
}
@@ -30,6 +36,40 @@ async function invalidationCache(previousModel, modelClass) {
            return await invalidation({ key: usedKey });
    }));
}
async function afterBulkInvalidation(options, modelClass) {
    const id = options.where?.id;
    if (!id) {
        return;
    }
    if (Array.isArray(id)) {
        const ids = [...new Set(id)];
        Promise.all(ids?.map((i) => {
            invalidationCache({
                [modelClass['primaryKeyAttribute']]: i,
            }, modelClass);
        }));
        return;
    }
    if (typeof id !== 'object') {
        invalidationCache({
            [modelClass['primaryKeyAttribute']]: id,
        }, modelClass);
    }
    return;
}
async function beforeBulkInvalidation(options, modelClass) {
    if (options.where?.id?.length || (options?.where?.id && typeof options?.where?.id !== 'object')) {
        return;
    }
    const { transaction, ...customOptions } = options || { transaction: undefined };
    modelClass?.['findAll']?.(customOptions).then(async (models) => {
        await Promise.all((models || []).map(async (model) => {
            if (model) {
                invalidateCache(model, options, modelClass);
            }
        }));
    });
}
function Cache(cacheOptions) {
    return (target) => {
        const options = Object.assign({}, {
@@ -43,14 +83,16 @@ function Cache(cacheOptions) {
                    return instance;
                },
                beforeBulkUpdate: async (options) => {
                    const { transaction, ...customOptions } = options || { transaction: undefined };
                    target?.['findAll']?.(customOptions).then(async (models) => {
                        await Promise.all((models || []).map(async (model) => {
                            if (model) {
                                invalidateCache(model, options, target);
                            }
                        }));
                    });
                    beforeBulkInvalidation(options, target);
                },
                AfterBulkUpdate: async (options) => {
                    return afterBulkInvalidation(options, target);
                },
                beforeBulkDestroy: async (options) => {
                    beforeBulkInvalidation(options, target);
                },
                AfterBulkDestroy: async (options) => {
                    return afterBulkInvalidation(options, target);
                }
            },
        });
+1 −1
Original line number Diff line number Diff line
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/sequelize-cache/cache.ts"],"names":[],"mappings":"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"}
 No newline at end of file
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/sequelize-cache/cache.ts"],"names":[],"mappings":"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"}
 No newline at end of file
+1 −1

File changed.

Preview size limit exceeded, changes collapsed.

+2 −2
Original line number Diff line number Diff line
{
  "name": "base-repo",
  "version": "3.1.4",
  "version": "3.1.5-rc.0",
  "lockfileVersion": 2,
  "requires": true,
  "packages": {
    "": {
      "name": "base-repo",
      "version": "3.1.4",
      "version": "3.1.5-rc.0",
      "license": "UNLICENSED",
      "dependencies": {
        "@nestjs/common": "^9.0.3",
+1 −1
Original line number Diff line number Diff line
{
  "name": "base-repo",
  "version": "3.1.4",
  "version": "3.1.5-rc.0",
  "description": "<p align=\"center\">   <a href=\"http://nestjs.com/\" target=\"blank\"><img src=\"https://nestjs.com/img/logo_text.svg\" width=\"320\" alt=\"Nest Logo\" /></a> </p>",
  "author": "Fauzi Fadhillah",
  "private": false,
Loading