From d100bc3e4402acb54f6c7fc0b0c9df7620cb40d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alihan=20SARA=C3=87=28Brick=29?= <56413673+saracalihan@users.noreply.github.com> Date: Tue, 15 Feb 2022 00:47:29 +0300 Subject: [PATCH 1/7] Update npm-publish-github-packages.yml --- .github/workflows/npm-publish-github-packages.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/npm-publish-github-packages.yml b/.github/workflows/npm-publish-github-packages.yml index b8c9af2..6603c0a 100644 --- a/.github/workflows/npm-publish-github-packages.yml +++ b/.github/workflows/npm-publish-github-packages.yml @@ -30,6 +30,12 @@ jobs: with: node-version: 16 registry-url: https://npm.pkg.github.com/ + - name: Configure npm + run: | + echo '//registry.npmjs.org/:_authToken=${NPM_TOKEN}' > .npmrc + cat .npmrc + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - run: npm ci - run: npm run build - run: npm publish From bb46e6a30937925d84859ec9bf737e430e81e685 Mon Sep 17 00:00:00 2001 From: saracalihan Date: Tue, 15 Feb 2022 14:11:35 +0300 Subject: [PATCH 2/7] Model.redisClient type updated --- lib/Model.ts | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/Model.ts b/lib/Model.ts index bb62fa3..825651b 100644 --- a/lib/Model.ts +++ b/lib/Model.ts @@ -1,4 +1,4 @@ -import { createClient, RedisClientOptions } from 'redis'; +import { createClient, RedisClientOptions, RedisClientType } from 'redis'; import ModelInstance from './ModelInstance'; import { isObject, getKeyValue, safeWrite, safeRead, @@ -20,7 +20,7 @@ class Model { public schema: Object; - public redisClient: any; + public redisClient: RedisClientType; public flexSchema: Boolean | undefined; @@ -76,7 +76,7 @@ class Model { } public async deleteAll(options?: any) { - const keys: String[] = await this.redisClient.keys(`${this.keyPrefix}:*`); + const keys: any = await this.redisClient.keys(`${this.keyPrefix}:*`); return keys.length > 0 ? await this.redisClient.del(keys) : 0; } @@ -103,7 +103,7 @@ class Model { return `${this.keyPrefix}:${u}`; } - public async runCommand(commands: Array): Promise { + public async runCommand(commands: any | Array): Promise { return await this.redisClient.sendCommand(commands); // ['hget', 'user:1', 'name'] } } diff --git a/package.json b/package.json index 261e0ec..fea79d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metronom", - "version": "1.1.1", + "version": "1.1.2", "description": "Easy to use Redis ORM based on node-redis", "main": "dist/index.js", "types": "dist/index.d.ts", From d4fb21998ab3ff5ddefb68eb3d65db611832c7fe Mon Sep 17 00:00:00 2001 From: beyzaerkan Date: Wed, 16 Feb 2022 17:32:28 +0300 Subject: [PATCH 3/7] getAll function added --- example/basic.js | 5 ++++- lib/Model.ts | 10 +++++++++ test/unit/model.test.js | 45 +++++++++++++++++++++++++++++------------ 3 files changed, 46 insertions(+), 14 deletions(-) diff --git a/example/basic.js b/example/basic.js index 96e4a9d..2805a30 100644 --- a/example/basic.js +++ b/example/basic.js @@ -22,7 +22,7 @@ const flexUserModel = new Model( (async () => { const data = { surname: 'Black', - age: 20, + age: Date.now(), job: 'teacher' // Dont save because userModel is not flex }; let user = await userModel.create(data); @@ -34,6 +34,9 @@ const flexUserModel = new Model( user = await userModel.findById(user.age); console.log({ find: user.toJSON() }); + user = await userModel.getAll(); + console.log({ getAll: user }); + user = await userModel.deleteById(user.age); console.log({ delete: user }); diff --git a/lib/Model.ts b/lib/Model.ts index 825651b..46b15bf 100644 --- a/lib/Model.ts +++ b/lib/Model.ts @@ -62,6 +62,16 @@ class Model { return new ModelInstance(valueObject, this, { redisKey }); } + public async getAll() { + const keys: String[] = await this.redisClient.keys(`${this.keyPrefix}:*`); + const results: any[] = []; + for await (const key of keys) { + const response = await this._read(key); + results.push(new ModelInstance(response, this, { redisKey: key })); + } + return results; + } + public async findById(id: any): Promise { const redisKey: string = `${this.keyPrefix}:${id}`; const response = await this._read(redisKey); diff --git a/test/unit/model.test.js b/test/unit/model.test.js index 811719e..d0b33cb 100644 --- a/test/unit/model.test.js +++ b/test/unit/model.test.js @@ -99,17 +99,36 @@ describe('model.deleteById()', () => { }); }); -// describe('model.deleteAll()', () => { -// const userModel = new Model({ id: 0, name: '', surname: '', age: 1 }, 'users', { keyUnique: 'id' }); +describe('model.deleteAll()', () => { + const userModel = new Model({ id: 0, name: '', surname: '', age: 1 }, 'users', { keyUnique: 'id' }); + + test('client should get 1 when this model\'s keys deleted succesfully', async () => { + const isDeleted = await userModel.deleteAll(); + const isKeyExist = (await userModel.redisClient.keys(`${userModel.keyPrefix}:*`)).length > 0; + expect(isDeleted && !isKeyExist).toEqual(true); + }); + test('client should get 0 when records cant deleted', async () => { + const isDeleted = await userModel.deleteAll(); + const isKeyExist = (await userModel.redisClient.keys(`${userModel.keyPrefix}:*`)).length > 0; + expect(!isDeleted && !isKeyExist).toEqual(true); + }); +}); + +describe('model.getAll()', () => { + const userModel = new Model({ id: 0, name: '', surname: '', age: 1 }, 'users', { keyUnique: 'id' }); -// test('client should get 1 when this model\'s keys deleted succesfully', async () => { -// const isDeleted = await userModel.deleteAll(); -// const isKeyExist = (await userModel.redisClient.keys(`${userModel.keyPrefix}:*`)).length > 0; -// expect(isDeleted && !isKeyExist).toEqual(true); -// }); -// test('client should get 0 when records cant deleted', async () => { -// const isDeleted = await userModel.deleteAll(); -// const isKeyExist = (await userModel.redisClient.keys(`${userModel.keyPrefix}:*`)).length > 0; -// expect(!isDeleted && !isKeyExist).toEqual(true); -// }); -// }); \ No newline at end of file + test('client should find succesfully when created new record', async () => { + const id = Date.now(); + await userModel.create({ id, name: 'beyza', surname: 'erkan', age: 19 }) + const users = await userModel.getAll(); + expect(users).not.toBeNull(); + }); + + test('client should get null when record deleted succesfully', async () => { + const id = Date.now(); + await userModel.create({ id, name: 'beyza', surname: 'erkan', age: 19 }) + await userModel.deleteAll(); + const users = await userModel.getAll(); + expect(users).toEqual([]); + }); +}); From 866c47053fbee897544ee8b1a8c65e1d7f65f8f8 Mon Sep 17 00:00:00 2001 From: beyzaerkan Date: Wed, 16 Feb 2022 17:52:19 +0300 Subject: [PATCH 4/7] logical errors fixed --- test/unit/model.test.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/unit/model.test.js b/test/unit/model.test.js index d0b33cb..da89c1f 100644 --- a/test/unit/model.test.js +++ b/test/unit/model.test.js @@ -124,9 +124,8 @@ describe('model.getAll()', () => { expect(users).not.toBeNull(); }); - test('client should get null when record deleted succesfully', async () => { + test('client should get empty array when record deleted succesfully', async () => { const id = Date.now(); - await userModel.create({ id, name: 'beyza', surname: 'erkan', age: 19 }) await userModel.deleteAll(); const users = await userModel.getAll(); expect(users).toEqual([]); From 9d9cc7e952048b73503c5d874bea0f4a84b599e5 Mon Sep 17 00:00:00 2001 From: beyzaerkan Date: Wed, 16 Feb 2022 17:55:51 +0300 Subject: [PATCH 5/7] typo fixed --- test/unit/model.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/model.test.js b/test/unit/model.test.js index da89c1f..06c4b48 100644 --- a/test/unit/model.test.js +++ b/test/unit/model.test.js @@ -124,7 +124,7 @@ describe('model.getAll()', () => { expect(users).not.toBeNull(); }); - test('client should get empty array when record deleted succesfully', async () => { + test('client should get empty array when records are not found', async () => { const id = Date.now(); await userModel.deleteAll(); const users = await userModel.getAll(); From dd86b8fb2a864e216f364c6edc4fa7ed6ebcd33f Mon Sep 17 00:00:00 2001 From: beyzaerkan Date: Wed, 16 Feb 2022 18:08:30 +0300 Subject: [PATCH 6/7] fixed --- test/unit/model.test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/test/unit/model.test.js b/test/unit/model.test.js index 06c4b48..ee91a11 100644 --- a/test/unit/model.test.js +++ b/test/unit/model.test.js @@ -125,7 +125,6 @@ describe('model.getAll()', () => { }); test('client should get empty array when records are not found', async () => { - const id = Date.now(); await userModel.deleteAll(); const users = await userModel.getAll(); expect(users).toEqual([]); From 0dcd5eae71a08d61b9ad794909dfa21fa20597ae Mon Sep 17 00:00:00 2001 From: beyzaerkan Date: Wed, 16 Feb 2022 18:23:19 +0300 Subject: [PATCH 7/7] 1.2.0 version --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b7cb270..f942517 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "metronom", - "version": "0.1.0", + "version": "1.2.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index fea79d3..bb4c639 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metronom", - "version": "1.1.2", + "version": "1.2.0", "description": "Easy to use Redis ORM based on node-redis", "main": "dist/index.js", "types": "dist/index.d.ts",