add redis cache

This commit is contained in:
joseph le 2023-10-30 07:29:16 +07:00
parent a9911f06b9
commit 2546f6bd24
10 changed files with 333 additions and 8 deletions

View File

@ -23,7 +23,9 @@
"@adonisjs/lucid",
"@adonisjs/auth",
"@adonisjs/session",
"@adonisjs/view"
"@adonisjs/view",
"@kaperskyguru/adonis-cache",
"@adonisjs/redis"
],
"aceProviders": [
"@adonisjs/repl"

View File

@ -11,3 +11,7 @@ MYSQL_PASSWORD=
MYSQL_DB_NAME=lucid
SESSION_DRIVER=cookie
CACHE_VIEWS=false
REDIS_CONNECTION=local
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=

56
config/cache.ts Normal file
View File

@ -0,0 +1,56 @@
/*
* @kaperskyguru/adonis-cache
*
* (c) Solomon Eseme <kaperskyguru@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
import Env from '@ioc:Adonis/Core/Env'
import { CacheConfig } from '@ioc:Kaperskyguru/Adonis-Cache'
const cacheConfig: CacheConfig = {
driver: Env.get('CACHE_DRIVER') as string,
drivers: {
file: {
driver: 'file',
path: 'cache/data',
},
array: {
driver: 'array',
serialize: false,
},
database: {
driver: 'database',
table: 'cache',
connection: null,
lock_connection: null,
},
redis: {
driver: 'redis',
connection: 'cache',
lock_connection: 'default',
},
memcached: {
driver: Env.get('CACHE_DRIVER', 'memcached') as string,
persistent_id: Env.get('MEMCACHED_PERSISTENT_ID') as string,
sasl: [Env.get('MEMCACHED_USERNAME') as string, Env.get('MEMCACHED_PASSWORD') as string],
options: {
// Memcached::OPT_CONNECT_TIMEOUT : 2000,
},
servers: {
host: Env.get('MEMCACHED_HOST', '127.0.0.1') as string,
port: Env.get('MEMCACHED_PORT', 11211) as string,
weight: 100,
},
},
},
}
export default cacheConfig

46
config/redis.ts Normal file
View File

@ -0,0 +1,46 @@
/**
* Config source: https://git.io/JemcF
*
* Feel free to let us know via PR, if you find something broken in this config
* file.
*/
import Env from '@ioc:Adonis/Core/Env'
import { redisConfig } from '@adonisjs/redis/build/config'
/*
|--------------------------------------------------------------------------
| Redis configuration
|--------------------------------------------------------------------------
|
| Following is the configuration used by the Redis provider to connect to
| the redis server and execute redis commands.
|
| Do make sure to pre-define the connections type inside `contracts/redis.ts`
| file for AdonisJs to recognize connections.
|
| Make sure to check `contracts/redis.ts` file for defining extra connections
*/
export default redisConfig({
connection: Env.get('REDIS_CONNECTION'),
connections: {
/*
|--------------------------------------------------------------------------
| The default connection
|--------------------------------------------------------------------------
|
| The main connection you want to use to execute redis commands. The same
| connection will be used by the session provider, if you rely on the
| redis driver.
|
*/
local: {
host: Env.get('REDIS_HOST'),
port: Env.get('REDIS_PORT'),
password: Env.get('REDIS_PASSWORD', ''),
db: 0,
keyPrefix: '',
},
},
})

13
contracts/redis.ts Normal file
View File

@ -0,0 +1,13 @@
/**
* Contract source: https://git.io/JemcN
*
* Feel free to let us know via PR, if you find something broken in this config
* file.
*/
import { InferConnectionsFromConfig } from '@adonisjs/redis/build/config'
import redisConfig from '../config/redis'
declare module '@ioc:Adonis/Addons/Redis' {
interface RedisConnectionsList extends InferConnectionsFromConfig<typeof redisConfig> {}
}

6
env.ts
View File

@ -27,5 +27,9 @@ export default Env.rules({
MYSQL_USER: Env.schema.string(),
MYSQL_PASSWORD: Env.schema.string.optional(),
MYSQL_DB_NAME: Env.schema.string(),
SESSION_DRIVER: Env.schema.string()
SESSION_DRIVER: Env.schema.string(),
REDIS_CONNECTION: Env.schema.enum(["local"] as const),
REDIS_HOST: Env.schema.string({ format: "host" }),
REDIS_PORT: Env.schema.number(),
REDIS_PASSWORD: Env.schema.string.optional(),
});

190
package-lock.json generated
View File

@ -11,9 +11,11 @@
"@adonisjs/auth": "^8.2.3",
"@adonisjs/core": "^5.9.0",
"@adonisjs/lucid": "^18.4.0",
"@adonisjs/redis": "^7.3.4",
"@adonisjs/repl": "^3.1.11",
"@adonisjs/session": "^6.4.0",
"@adonisjs/view": "^6.2.0",
"@kaperskyguru/adonis-cache": "^2.1.1",
"axios": "^1.4.0",
"child_process": "^1.0.2",
"chokidar": "^3.5.3",
@ -480,6 +482,19 @@
"truncatise": "0.0.8"
}
},
"node_modules/@adonisjs/redis": {
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@adonisjs/redis/-/redis-7.3.4.tgz",
"integrity": "sha512-74SApmgimjwU8QflnhANeo7CpQeP9aoObM217LJ51AtKwTvnb0yXaqdj2v60G9uCqcqZAIFWJmeUdXGgUwGcXw==",
"dependencies": {
"@poppinss/utils": "^5.0.0",
"@types/ioredis": "^4.28.10",
"ioredis": "^5.2.3"
},
"peerDependencies": {
"@adonisjs/core": "^5.1.0"
}
},
"node_modules/@adonisjs/repl": {
"version": "3.1.11",
"resolved": "https://registry.npmjs.org/@adonisjs/repl/-/repl-3.1.11.tgz",
@ -837,6 +852,11 @@
"npm": ">=6.14.13"
}
},
"node_modules/@ioredis/commands": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz",
"integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg=="
},
"node_modules/@japa/api-client": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/@japa/api-client/-/api-client-1.4.4.tgz",
@ -1027,6 +1047,23 @@
"integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
"dev": true
},
"node_modules/@kaperskyguru/adonis-cache": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@kaperskyguru/adonis-cache/-/adonis-cache-2.1.1.tgz",
"integrity": "sha512-FRBHd/QSAC/aUTQS0MW6h31O8CFUPy62U0GH5z11pZWVl1NmsbU8DBdYOQA45jyTjKR1cErLyI+lWqgrG0l9xw==",
"dependencies": {
"fs": "^0.0.1-security"
},
"peerDependencies": {
"@adonisjs/core": "^5.1.1",
"@adonisjs/redis": "^7.0.2"
},
"peerDependenciesMeta": {
"@adonisjs/redis": {
"optional": true
}
}
},
"node_modules/@mrmlnc/readdir-enhanced": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
@ -1324,6 +1361,14 @@
"resolved": "https://registry.npmjs.org/@types/he/-/he-1.2.1.tgz",
"integrity": "sha512-CdNmJMcSqX1BiP3iSsWt+VgixndRIDGzWyaGpBnW3i5heATSk5bJu2j3buutsoBQNjyryqxaNpr8M7fRsGL15w=="
},
"node_modules/@types/ioredis": {
"version": "4.28.10",
"resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.10.tgz",
"integrity": "sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/istanbul-lib-coverage": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
@ -2591,6 +2636,14 @@
"node": ">=6"
}
},
"node_modules/cluster-key-slot": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz",
"integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/co-compose": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/co-compose/-/co-compose-7.0.3.tgz",
@ -4874,6 +4927,29 @@
"node": ">= 0.10"
}
},
"node_modules/ioredis": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.3.2.tgz",
"integrity": "sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==",
"dependencies": {
"@ioredis/commands": "^1.1.1",
"cluster-key-slot": "^1.1.0",
"debug": "^4.3.4",
"denque": "^2.1.0",
"lodash.defaults": "^4.2.0",
"lodash.isarguments": "^3.1.0",
"redis-errors": "^1.2.0",
"redis-parser": "^3.0.0",
"standard-as-callback": "^2.1.0"
},
"engines": {
"node": ">=12.22.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/ioredis"
}
},
"node_modules/ip": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
@ -5544,6 +5620,11 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/lodash.defaults": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
"integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ=="
},
"node_modules/lodash.flatten": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
@ -5561,6 +5642,11 @@
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
"integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
},
"node_modules/lodash.isarguments": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
"integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg=="
},
"node_modules/lodash.isboolean": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
@ -7370,6 +7456,25 @@
"esprima": "~4.0.0"
}
},
"node_modules/redis-errors": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
"integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==",
"engines": {
"node": ">=4"
}
},
"node_modules/redis-parser": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
"integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==",
"dependencies": {
"redis-errors": "^1.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/reflect-metadata": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
@ -8235,6 +8340,11 @@
"get-source": "^2.0.12"
}
},
"node_modules/standard-as-callback": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz",
"integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A=="
},
"node_modules/static-extend": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
@ -9605,6 +9715,16 @@
}
}
},
"@adonisjs/redis": {
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@adonisjs/redis/-/redis-7.3.4.tgz",
"integrity": "sha512-74SApmgimjwU8QflnhANeo7CpQeP9aoObM217LJ51AtKwTvnb0yXaqdj2v60G9uCqcqZAIFWJmeUdXGgUwGcXw==",
"requires": {
"@poppinss/utils": "^5.0.0",
"@types/ioredis": "^4.28.10",
"ioredis": "^5.2.3"
}
},
"@adonisjs/repl": {
"version": "3.1.11",
"resolved": "https://registry.npmjs.org/@adonisjs/repl/-/repl-3.1.11.tgz",
@ -9895,6 +10015,11 @@
"resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.1.0.tgz",
"integrity": "sha512-38DT60rumHfBYynif3lmtxMqMqmsOQIxQgEuPZxCk2yUYN0eqWpTACgxi0VpidvsJB8CRxCpvP7B3anK85FjtQ=="
},
"@ioredis/commands": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz",
"integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg=="
},
"@japa/api-client": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/@japa/api-client/-/api-client-1.4.4.tgz",
@ -10071,6 +10196,14 @@
"integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
"dev": true
},
"@kaperskyguru/adonis-cache": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@kaperskyguru/adonis-cache/-/adonis-cache-2.1.1.tgz",
"integrity": "sha512-FRBHd/QSAC/aUTQS0MW6h31O8CFUPy62U0GH5z11pZWVl1NmsbU8DBdYOQA45jyTjKR1cErLyI+lWqgrG0l9xw==",
"requires": {
"fs": "^0.0.1-security"
}
},
"@mrmlnc/readdir-enhanced": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
@ -10333,6 +10466,14 @@
"resolved": "https://registry.npmjs.org/@types/he/-/he-1.2.1.tgz",
"integrity": "sha512-CdNmJMcSqX1BiP3iSsWt+VgixndRIDGzWyaGpBnW3i5heATSk5bJu2j3buutsoBQNjyryqxaNpr8M7fRsGL15w=="
},
"@types/ioredis": {
"version": "4.28.10",
"resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.10.tgz",
"integrity": "sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==",
"requires": {
"@types/node": "*"
}
},
"@types/istanbul-lib-coverage": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
@ -11312,6 +11453,11 @@
"shallow-clone": "^3.0.0"
}
},
"cluster-key-slot": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz",
"integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA=="
},
"co-compose": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/co-compose/-/co-compose-7.0.3.tgz",
@ -13081,6 +13227,22 @@
"resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
"integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw=="
},
"ioredis": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.3.2.tgz",
"integrity": "sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==",
"requires": {
"@ioredis/commands": "^1.1.1",
"cluster-key-slot": "^1.1.0",
"debug": "^4.3.4",
"denque": "^2.1.0",
"lodash.defaults": "^4.2.0",
"lodash.isarguments": "^3.1.0",
"redis-errors": "^1.2.0",
"redis-parser": "^3.0.0",
"standard-as-callback": "^2.1.0"
}
},
"ip": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
@ -13582,6 +13744,11 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"lodash.defaults": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
"integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ=="
},
"lodash.flatten": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
@ -13599,6 +13766,11 @@
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
"integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
},
"lodash.isarguments": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
"integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg=="
},
"lodash.isboolean": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
@ -14983,6 +15155,19 @@
"esprima": "~4.0.0"
}
},
"redis-errors": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
"integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w=="
},
"redis-parser": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
"integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==",
"requires": {
"redis-errors": "^1.0.0"
}
},
"reflect-metadata": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
@ -15651,6 +15836,11 @@
"get-source": "^2.0.12"
}
},
"standard-as-callback": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz",
"integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A=="
},
"static-extend": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",

View File

@ -24,9 +24,11 @@
"@adonisjs/auth": "^8.2.3",
"@adonisjs/core": "^5.9.0",
"@adonisjs/lucid": "^18.4.0",
"@adonisjs/redis": "^7.3.4",
"@adonisjs/repl": "^3.1.11",
"@adonisjs/session": "^6.4.0",
"@adonisjs/view": "^6.2.0",
"@kaperskyguru/adonis-cache": "^2.1.1",
"axios": "^1.4.0",
"child_process": "^1.0.2",
"chokidar": "^3.5.3",

View File

@ -27,6 +27,8 @@ import moment from "moment";
import Product from "App/Models/Product";
import { sendDeviceInfora } from "App/utils/sendDeviceInfor";
import InfoDevice from "App/Models/InfoDevice";
import LogReport from "App/Models/LogReport";
import Cache from "@ioc:Kaperskyguru/Adonis-Cache";
runtimeCheckLogs(Env.get("FOLDER_LOGS"));
@ -300,11 +302,15 @@ Route.post("/api/sendMailInforDevice", async () => {
// Route.post("/api/test", async () => {
// try {
// let abc = await InfoDevice.findBy('SN', 'FHK0935F0Z3')
// let pattern = /[\x00-\x20\x7F]/g;
// if(abc?.$extras.PID.match(pattern)){
// return "Loại"
// }
// const logs = await Cache.get('logs')
// if(logs){
// return {type: "cache", data: logs}
// }else{
// let data = await LogReport.all();
// Cache.set('logs', data, 120)
// return {type: "no cache", data: data}
// }
// } catch (error) {
// console.log(error)
// }

View File

@ -32,7 +32,9 @@
"@adonisjs/lucid",
"@adonisjs/auth",
"@adonisjs/session",
"@adonisjs/view"
"@adonisjs/view",
"@kaperskyguru/adonis-cache",
"@adonisjs/redis"
]
}
}