Loading dist/sequelize-cache/cache.js +34 −4 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -43,6 +49,9 @@ function Cache(cacheOptions) { return instance; }, beforeBulkUpdate: async (options) => { if (options.where?.id?.length || (options?.where?.id && typeof options?.where?.id !== 'object')) { return; } const { transaction, ...customOptions } = options || { transaction: undefined }; target?.['findAll']?.(customOptions).then(async (models) => { await Promise.all((models || []).map(async (model) => { Loading @@ -51,6 +60,27 @@ function Cache(cacheOptions) { } })); }); }, AfterBulkUpdate: async (options) => { const id = options.where?.id; if (!id) { return; } if (Array.isArray(id)) { const ids = [...new Set(id)]; Promise.all(ids?.map((i) => { invalidationCache({ [target['primaryKeyAttribute']]: i, }, target); })); return; } if (typeof id !== 'object') { invalidationCache({ [target['primaryKeyAttribute']]: id, }, target); } return; } }, }); Loading dist/sequelize-cache/cache.js.map +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 dist/tsconfig.build.tsbuildinfo +1 −1 File changed.Preview size limit exceeded, changes collapsed. Show changes src/sequelize-cache/cache.ts +38 −5 Original line number Diff line number Diff line import { circularToJSON } from 'helpers'; import { SequelizeCache } from './sequelize-cache'; import { addOptions } from 'sequelize-typescript'; import { addOptions, AfterBulkUpdate } from 'sequelize-typescript'; async function invalidateCache(model, options, modelClass) { if (SequelizeCache.showLog) { const previousModel = { ...model['dataValues'], ...circularToJSON(model['_previousDataValues']) } SequelizeCache.logging(previousModel) } if (options?.transaction) { options.transaction.afterCommit(() => { invalidationCache(previousModel, modelClass) invalidationCache({ [modelClass['primaryKeyAttribute']]: model['_previousDataValues']?.[modelClass['primaryKeyAttribute']], }, modelClass) }) SequelizeCache.logging('hooks after update transaction') return model } invalidationCache(previousModel, modelClass) invalidationCache({ [modelClass['primaryKeyAttribute']]: model['_previousDataValues']?.[modelClass['primaryKeyAttribute']], }, modelClass) SequelizeCache.logging('hooks after update') return model Loading Loading @@ -47,6 +53,9 @@ export function Cache(cacheOptions?: { ttl?: number }) { return instance }, beforeBulkUpdate: async (options) => { if (options.where?.id?.length || (options?.where?.id && typeof options?.where?.id !== 'object')) { return; } const { transaction, ...customOptions } = options || { transaction: undefined } target?.['findAll']?.(customOptions).then(async (models: any[]) => { await Promise.all((models || []).map(async(model) => { Loading @@ -55,6 +64,30 @@ export function Cache(cacheOptions?: { ttl?: number }) { } })) }); }, AfterBulkUpdate: async (options) => { const id = options.where?.id; if (!id) { return; } if (Array.isArray(id)) { const ids = [...new Set(id)]; Promise.all(ids?.map((i) => { invalidationCache({ [target['primaryKeyAttribute']]: i, }, target) })) return; } if (typeof id !== 'object') { invalidationCache({ [target['primaryKeyAttribute']]: id, }, target) } return; } }, }); Loading Loading
dist/sequelize-cache/cache.js +34 −4 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -43,6 +49,9 @@ function Cache(cacheOptions) { return instance; }, beforeBulkUpdate: async (options) => { if (options.where?.id?.length || (options?.where?.id && typeof options?.where?.id !== 'object')) { return; } const { transaction, ...customOptions } = options || { transaction: undefined }; target?.['findAll']?.(customOptions).then(async (models) => { await Promise.all((models || []).map(async (model) => { Loading @@ -51,6 +60,27 @@ function Cache(cacheOptions) { } })); }); }, AfterBulkUpdate: async (options) => { const id = options.where?.id; if (!id) { return; } if (Array.isArray(id)) { const ids = [...new Set(id)]; Promise.all(ids?.map((i) => { invalidationCache({ [target['primaryKeyAttribute']]: i, }, target); })); return; } if (typeof id !== 'object') { invalidationCache({ [target['primaryKeyAttribute']]: id, }, target); } return; } }, }); Loading
dist/sequelize-cache/cache.js.map +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
dist/tsconfig.build.tsbuildinfo +1 −1 File changed.Preview size limit exceeded, changes collapsed. Show changes
src/sequelize-cache/cache.ts +38 −5 Original line number Diff line number Diff line import { circularToJSON } from 'helpers'; import { SequelizeCache } from './sequelize-cache'; import { addOptions } from 'sequelize-typescript'; import { addOptions, AfterBulkUpdate } from 'sequelize-typescript'; async function invalidateCache(model, options, modelClass) { if (SequelizeCache.showLog) { const previousModel = { ...model['dataValues'], ...circularToJSON(model['_previousDataValues']) } SequelizeCache.logging(previousModel) } if (options?.transaction) { options.transaction.afterCommit(() => { invalidationCache(previousModel, modelClass) invalidationCache({ [modelClass['primaryKeyAttribute']]: model['_previousDataValues']?.[modelClass['primaryKeyAttribute']], }, modelClass) }) SequelizeCache.logging('hooks after update transaction') return model } invalidationCache(previousModel, modelClass) invalidationCache({ [modelClass['primaryKeyAttribute']]: model['_previousDataValues']?.[modelClass['primaryKeyAttribute']], }, modelClass) SequelizeCache.logging('hooks after update') return model Loading Loading @@ -47,6 +53,9 @@ export function Cache(cacheOptions?: { ttl?: number }) { return instance }, beforeBulkUpdate: async (options) => { if (options.where?.id?.length || (options?.where?.id && typeof options?.where?.id !== 'object')) { return; } const { transaction, ...customOptions } = options || { transaction: undefined } target?.['findAll']?.(customOptions).then(async (models: any[]) => { await Promise.all((models || []).map(async(model) => { Loading @@ -55,6 +64,30 @@ export function Cache(cacheOptions?: { ttl?: number }) { } })) }); }, AfterBulkUpdate: async (options) => { const id = options.where?.id; if (!id) { return; } if (Array.isArray(id)) { const ids = [...new Set(id)]; Promise.all(ids?.map((i) => { invalidationCache({ [target['primaryKeyAttribute']]: i, }, target) })) return; } if (typeof id !== 'object') { invalidationCache({ [target['primaryKeyAttribute']]: id, }, target) } return; } }, }); Loading