Commit bfb5a1f7 authored by Fauzi Fadhillah's avatar Fauzi Fadhillah
Browse files

feat(findAllCache): find all cache just use ttl

parent 7f849678
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -31,10 +31,7 @@ export declare class Model<TAttributes extends {} = any, TCreate extends {} = TA
    private static rejectOnEmptyMode;
    static findAllCache<T extends Model>(this: {
        new (): T;
    }, options?: FindAllNestedOptionsCache<T['_attributes']>): Promise<T[]>;
    static findAllCache<T extends Model>(this: {
        new (): T;
    }, options?: FindAllOptionsCache<T['_attributes']>): Promise<T[]>;
    }, options: FindAllNestedOptionsCache<T['_attributes']>): Promise<T[]>;
    static scopes<M extends SequelizeModel>(this: ModelStatic<M>, options?: string | ScopeOptions | readonly (string | ScopeOptions)[] | WhereAttributeHash<M>): typeof Model & {
        new (): M;
    };
+7 −25
Original line number Diff line number Diff line
@@ -2,7 +2,6 @@
Object.defineProperty(exports, "__esModule", { value: true });
exports.Model = void 0;
const common_1 = require("@nestjs/common");
const date_utility_1 = require("../date-utility");
const lodash_1 = require("lodash");
const crypto = require("crypto");
const sequelize_cache_1 = require("./sequelize-cache");
@@ -111,38 +110,21 @@ class Model extends sequelize_typescript_1.Model {
            throw options.rejectOnEmpty;
        }
    }
    static async findAllCache(options = {}) {
    static async findAllCache(options) {
        const TTL = options?.ttl || this['modelTTL'] || sequelize_cache_1.SequelizeCache.defaultTTL;
        delete options?.ttl;
        const maxUpdateOptions = getMaxUpdateOptions(options);
        const onUpdateAttribute = this['getAttributes']()?.[this['onUpdateAttribute']];
        const maxUpdatedAtPromise = onUpdateAttribute?.field
            ? getCustomCache({ key: 'max', maxUpdateOptions, model: `${this.name}` }, 2, () => (this['max'](`${this.name}.${onUpdateAttribute?.field}`, maxUpdateOptions)))
            : undefined;
        const [maxUpdatedAt, count] = await Promise.all([
            maxUpdatedAtPromise,
            this['countCache'](2, options),
        ]);
        if (!count && !maxUpdatedAt)
            return TransformCacheToModels(this, '[]');
        const max = date_utility_1.DateUtility.convertDateTimeToEpoch(new Date(maxUpdatedAt)) + +count;
        const scope = (0, lodash_1.cloneDeep)(this['_scope']);
        const defaultOptions = this['_defaultsOptions'](options, scope);
        const keyOpts = cache_utilty_1.default.setQueryOptions(defaultOptions);
        const keyTime = cache_utilty_1.default.setKey(this.name, keyOpts);
        let timeCached = await sequelize_cache_1.SequelizeCache.catchGetter({ key: keyTime });
        let canFetch = false;
        if (!timeCached || max.toString() != timeCached) {
            canFetch = true;
            await sequelize_cache_1.SequelizeCache.catchSetter({ key: keyTime, value: max.toString(), ttl: TTL });
            timeCached = max.toString();
        }
        const keyModel = cache_utilty_1.default.setKey(this.name, timeCached, keyOpts);
        const keyModel = cache_utilty_1.default.setKey(this.name, keyOpts);
        let modelString = await sequelize_cache_1.SequelizeCache.catchGetter({ key: keyModel });
        if (canFetch || !modelString) {
        if (!modelString) {
            const newModels = await this['findAll'](options);
            if (!newModels?.length) {
                return [];
            }
            modelString = JSON.stringify(newModels);
            const newKeyModel = cache_utilty_1.default.setKey(this.name, max, keyOpts);
            const newKeyModel = cache_utilty_1.default.setKey(this.name, keyModel);
            sequelize_cache_1.SequelizeCache.catchSetter({ key: newKeyModel, value: modelString, ttl: TTL });
        }
        const include = options && 'include' in options ? options?.include : undefined;
+1 −1
Original line number Diff line number Diff line
{"version":3,"file":"base-model.js","sourceRoot":"","sources":["../../src/sequelize-cache/base-model.ts"],"names":[],"mappings":"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"}
 No newline at end of file
{"version":3,"file":"base-model.js","sourceRoot":"","sources":["../../src/sequelize-cache/base-model.ts"],"names":[],"mappings":";;;AAAA,2CAAmD;AAEnD,mCAAmC;AACnC,iCAAiC;AACjC,uDAAmD;AAenD,+DAAkE;AAElE,iDAA0C;AAE1C,KAAK,UAAU,cAAc,CAC3B,GAAY,EACZ,GAAW,EACX,QAA8B;IAE9B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEvE,IAAI,UAAU,GAAG,MAAM,gCAAc,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAA;IAExE,IAAI,UAAU,EAAE;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,UAAoB,CAAM,CAAC;KAC9C;IAED,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;IAE/B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEnC,gCAAc,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAA;IAEzE,OAAO,KAAU,CAAC;AACpB,CAAC;AAgBD,SAAS,qBAAqB,CAAC,UAAe,EAAE,SAAiB,EAAE,OAAqC;IACtG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAEvC,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAE3B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAErF,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAe,EAAE,SAAiB,EAAE,OAAqC;IACvG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAEvC,IAAI,CAAC,SAAS,EAAE,MAAM;QAAE,OAAO,EAAE,CAAA;IAEjC,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAE1F,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAwD;IACnF,IAAG,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,IAAA,kBAAS,EAAC,OAAO,IAAI,EAAE,CAAC,CAAA;IAC3C,OAAO,UAAU,EAAE,KAAK,CAAA;IAExB,OAAO;QACL,KAAK,EAAE,UAAU,EAAE,KAAK;QACxB,QAAQ,EAAE,+BAAQ,CAAC,IAAI;KACxB,CAAA;AACH,CAAC;AA6BD,MAAa,KACX,SAAQ,4BAA6B;IA0BrC,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,UAA+F,EAAE;QAIjG,OAAO,GAAG,OAAO,IAAI,EAAS,CAAA;QAC9B,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,gCAAc,CAAC,UAAU,CAAA;QACzE,OAAO,OAAO,EAAE,GAAG,CAAA;QACnB,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,CAAA;QAC5C,OAAO,OAAO,EAAE,aAAa,CAAA;QAE7B,MAAM,KAAK,GAAG,IAAA,kBAAS,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;QACvC,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAC,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QAE/E,MAAM,aAAa,GAAG,sBAAY,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAA;QACrE,MAAM,IAAI,GAAG,MAAM,gCAAc,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC,IAAI,KAAK,aAAa,GAAG,EAAE,CAAC,CAAA;QACrG,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,GAAG,GAAG,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;QAGvD,IAAI,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,gCAAc,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAE7E,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAA;YAC/C,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YAGtC,IAAI,QAAQ,EAAE;gBACZ,MAAM,GAAG,GAAG,sBAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;gBAChG,gCAAc,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;aAClE;SACF;QACD,MAAM,OAAO,GAAG,OAAO,IAAI,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;QAC9E,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;QAE/D,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACpF,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;SACjF;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAiBD,MAAM,CAAC,KAAK,CAAC,aAAa,CACxB,UAA2B,EAC3B,UAE2D,EAAE;QAG7D,OAAO,GAAG,OAAO,IAAI,EAAS,CAAA;QAE9B,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,gCAAc,CAAC,UAAU,CAAA;QACzE,OAAO,OAAO,EAAE,GAAG,CAAA;QACnB,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,CAAA;QAC5C,OAAO,OAAO,EAAE,aAAa,CAAA;QAE7B,MAAM,KAAK,GAAG,IAAA,kBAAS,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;QACvC,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAE/D,MAAM,aAAa,GAAG,sBAAY;aAC/B,kBAAkB,CAAC,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,CAAA;QACnI,MAAM,GAAG,GAAG,sBAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,CAAC,CAAA;QAE1E,IAAI,WAAW,GAAG,MAAM,gCAAc,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;QAC3D,IAAI,CAAC,WAAW,EAAE;YAEhB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAC5D,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YAEtC,IAAI,QAAQ,EAAE;gBACZ,gCAAc,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;aAClE;SACF;QAED,MAAM,OAAO,GAAG,OAAO,IAAI,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;QAC9E,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;QAE/D,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACpF,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;SACjF;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,OAA2C,EAAE,cAAqB;QACjG,IAAI,OAAO,OAAO,EAAE,aAAa,IAAI,SAAS,IAAI,OAAO,EAAE,aAAa,EAAE;YACxE,MAAM,cAAc,CAAA;SACrB;aACI,IAAI,OAAO,OAAO,EAAE,aAAa,KAAK,QAAQ,EAAE;YACnD,MAAM,OAAO,CAAC,aAAa,CAAC;SAC7B;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,OAAoD;QAIpD,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,gCAAc,CAAC,UAAU,CAAA;QACzE,OAAO,OAAO,EAAE,GAAG,CAAA;QAEnB,MAAM,KAAK,GAAG,IAAA,kBAAS,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;QAEvC,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAE/D,MAAM,OAAO,GAAG,sBAAY,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAG7D,MAAM,QAAQ,GAAG,sBAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAExD,IAAI,WAAW,GAAG,MAAM,gCAAc,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAA;QAIrE,IAAI,CAAC,WAAW,EAAE;YAEhB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAA;YAChD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;gBACtB,OAAO,EAAE,CAAC;aACX;YACD,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;YAGvC,MAAM,WAAW,GAAG,sBAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YAC5D,gCAAc,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;SAC/E;QAED,MAAM,OAAO,GAAG,OAAO,IAAI,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;QAC9E,OAAO,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,CAAC,MAAM,CAEX,OAA4F;QAE5F,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAQ,CAAA;IACtC,CAAC;IAYD,MAAM,CAAC,KAAK,CAAC,UAAU,CAErB,GAAW,EACX,OAAsF;QAEtF,OAAO,cAAc,CAAC;YACpB,GAAG,EAAE,OAAO;YACZ,OAAO;YACP,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;SACtB,EAAE,GAAG,EAAE,GAAG,EAAE,CAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;IACrC,CAAC;;AA1MH,sBA2MC;AAxMQ,cAAQ,GAAG,CAAC,CAAA;AACZ,uBAAiB,GAAG,WAAW,CAAA;AACvB,4BAAsB,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,GAAG,IAAI,iBAAiB,CAAA;AAC3E,uBAAiB,GAAG,CAAC,OAAe,EAAS,EAAE,CAAC,IAAI,0BAAiB,CAAC,OAAO,CAAC,CAAA;AACtF,qBAAe,GAAG,IAAI,CAAA"}
 No newline at end of file
+1 −1

File changed.

Preview size limit exceeded, changes collapsed.

+8 −43
Original line number Diff line number Diff line
@@ -256,71 +256,36 @@ export class Model<TAttributes extends {} = any, TCreate extends {} = TAttribute
  }

  static async findAllCache<T extends Model>(this: { new(): T },
    options?: FindAllNestedOptionsCache<T['_attributes']>,
  ): Promise<T[]> 
  static async findAllCache<T extends Model>(this: { new(): T },
    options?: FindAllOptionsCache<T['_attributes']>,
  ): Promise<T[]> 
  static async findAllCache<T extends Model>(this: { new(): T },
    options: FindAllNestedOptionsCache<T['_attributes']> | FindAllOptionsCache<T['_attributes']> = {},
    options: FindAllNestedOptionsCache<T['_attributes']>,
  ): Promise<T[]> 
  {

    const TTL = options?.ttl || this['modelTTL'] || SequelizeCache.defaultTTL
    delete options?.ttl

    const maxUpdateOptions = getMaxUpdateOptions(options);

    const onUpdateAttribute = this['getAttributes']()?.[this['onUpdateAttribute']];
    const maxUpdatedAtPromise = onUpdateAttribute?.field
    ? getCustomCache(
    { key: 'max', maxUpdateOptions, model: `${this.name}` }, 
    2, 
    () => (this['max'](`${this.name}.${onUpdateAttribute?.field}`, maxUpdateOptions))) 
    : undefined

    // get max updatedAt on model
    const [maxUpdatedAt, count] = await Promise.all([
      maxUpdatedAtPromise,
      this['countCache'](2, options),
    ])

    if (!count && !maxUpdatedAt) return TransformCacheToModels(this, '[]')

    const max = DateUtility.convertDateTimeToEpoch(new Date(maxUpdatedAt)) + +count

    const scope = cloneDeep(this['_scope'])

    const defaultOptions = this['_defaultsOptions'](options, scope)
    // setting up key for FindOptions
    const keyOpts = CacheUtility.setQueryOptions(defaultOptions);

    // get what time is cached on this model based on keyOpts
    const keyTime = CacheUtility.setKey(this.name, keyOpts)
    let timeCached = await SequelizeCache.catchGetter({ key: keyTime })

    let canFetch = false
    // set time cache if timeCached is null
    if (!timeCached || max.toString() != timeCached) {
      canFetch = true

      await SequelizeCache.catchSetter({ key: keyTime, value: max.toString(), ttl: TTL })
      timeCached = max.toString()
    }

    // set key for get model
    const keyModel = CacheUtility.setKey(this.name, timeCached, keyOpts)
    const keyModel = CacheUtility.setKey(this.name, keyOpts)
    // get the model result based on key
    let modelString = await SequelizeCache.catchGetter({ key: keyModel })

    // check if result is null or can fetch
    // then can fetch row on database
    if (canFetch || !modelString) {
    if (!modelString) {
      // fetch row on models
      const newModels = await this['findAll'](options)
      if (!newModels?.length) {
        return [];
      }
      modelString = JSON.stringify(newModels)

      // set cache model based on new key
      const newKeyModel = CacheUtility.setKey(this.name, max, keyOpts)
      const newKeyModel = CacheUtility.setKey(this.name, keyModel)
      SequelizeCache.catchSetter({ key: newKeyModel, value: modelString, ttl: TTL })
    }