Files
lcbp3.np-dms.work/backend/node_modules/mariadb/lib/lru-prepare-cache.js
2025-09-21 20:29:15 +07:00

51 lines
1.0 KiB
JavaScript
Executable File

// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2015-2024 MariaDB Corporation Ab
'use strict';
const LRU = require('lru-cache');
/**
* LRU prepare cache
*
*/
class LruPrepareCache {
#lruCache;
#info;
constructor(info, prepareCacheLength) {
this.#info = info;
this.#lruCache = new LRU.LRUCache({
max: prepareCacheLength,
dispose: (value, key) => value.unCache()
});
}
get(sql) {
const key = this.#info.database + '|' + sql;
const cachedItem = this.#lruCache.get(key);
if (cachedItem) {
return cachedItem.incrementUse();
}
return null;
}
set(sql, cache) {
const key = this.#info.database + '|' + sql;
this.#lruCache.set(key, cache);
}
toString() {
let keyStr = '';
for (const value of this.#lruCache.keys()) {
keyStr += '[' + value + '],';
}
if (keyStr.length > 1) keyStr = keyStr.substring(0, keyStr.length - 1);
return 'info{cache:' + keyStr + '}';
}
reset() {
this.#lruCache.clear();
}
}
module.exports = LruPrepareCache;