diff --git a/packages/etd-services/src/mongodb/services/device/storage_management_owner_service.ts b/packages/etd-services/src/mongodb/services/device/storage_management_owner_service.ts index f8f2fa8..e62591e 100644 --- a/packages/etd-services/src/mongodb/services/device/storage_management_owner_service.ts +++ b/packages/etd-services/src/mongodb/services/device/storage_management_owner_service.ts @@ -1,6 +1,6 @@ import { schema } from "@etherdata-blockchain/storage-model"; import { configs, enums, interfaces } from "@etherdata-blockchain/common"; -import { Model } from "mongoose"; +import { Model, set } from "mongoose"; import { BaseMongoDBService } from "../../db_service"; import moment from "moment"; @@ -147,12 +147,19 @@ export class StorageManagementOwnerService extends BaseMongoDBService { + async getDeviceIdsByOwnerIdsOrNames(ownerIds: string[]): Promise { + const ownersFromUserNames = await this.model + .find({ user_name: { $in: ownerIds } }) + .populate("user_id") + .exec(); + const queryOwnerIds = ownersFromUserNames + .map((o) => o.user_id) + .concat(ownerIds); const query = schema.StorageItemModel.find({ - owner_id: { $in: ownerIds }, + owner_id: { $in: queryOwnerIds }, }).populate("qr_code"); const results = await query.exec(); diff --git a/packages/etd-services/src/tests/mongodb/storage/owner.test.ts b/packages/etd-services/src/tests/mongodb/storage/owner.test.ts index 4f39783..4bc07aa 100644 --- a/packages/etd-services/src/tests/mongodb/storage/owner.test.ts +++ b/packages/etd-services/src/tests/mongodb/storage/owner.test.ts @@ -146,7 +146,7 @@ describe("Given a storage owner", () => { await schema.StorageItemModel.create(mockData.MockStorageItem); await schema.StorageItemModel.create(mockData.MockStorageItem2); const service = new StorageManagementOwnerService(); - let result = await service.getDeviceIdsByOwnerIds([ + let result = await service.getDeviceIdsByOwnerIdsOrNames([ mockData.MockUser2.user_id, ]); expect(result).toHaveLength(0); @@ -158,7 +158,7 @@ describe("Given a storage owner", () => { await schema.StorageItemModel.create(mockData.MockStorageItem); await schema.StorageItemModel.create(mockData.MockStorageItem2); const service = new StorageManagementOwnerService(); - let result = await service.getDeviceIdsByOwnerIds([ + let result = await service.getDeviceIdsByOwnerIdsOrNames([ mockData.MockUser.user_id, ]); expect(result).toHaveLength(2); @@ -174,7 +174,7 @@ describe("Given a storage owner", () => { await schema.StorageItemModel.create(mockData.MockStorageItem); await schema.StorageItemModel.create(mockData.MockStorageItem2); const service = new StorageManagementOwnerService(); - let result = await service.getDeviceIdsByOwnerIds([]); + let result = await service.getDeviceIdsByOwnerIdsOrNames([]); expect(result).toHaveLength(0); }); @@ -184,7 +184,44 @@ describe("Given a storage owner", () => { await schema.StorageItemModel.create(mockData.MockStorageItem); await schema.StorageItemModel.create(mockData.MockStorageItem2); const service = new StorageManagementOwnerService(); - let result = await service.getDeviceIdsByOwnerIds([ + let result = await service.getDeviceIdsByOwnerIdsOrNames([ + mockData.MockUser.user_name, + ]); + expect(result).toHaveLength(2); + }); + + test("When calling get devices by owner ids", async () => { + await schema.StorageOwnerModel.create(mockData.MockUser); + await schema.StorageOwnerModel.create(mockData.MockUser2); + await schema.StorageItemModel.create(mockData.MockStorageItem); + await schema.StorageItemModel.create(mockData.MockStorageItem2); + const service = new StorageManagementOwnerService(); + let result = await service.getDeviceIdsByOwnerIdsOrNames([ + mockData.MockUser2.user_name, + ]); + expect(result).toHaveLength(0); + }); + + test("When calling get devices by owner ids", async () => { + await schema.StorageOwnerModel.create(mockData.MockUser); + await schema.StorageOwnerModel.create(mockData.MockUser2); + await schema.StorageItemModel.create(mockData.MockStorageItem); + await schema.StorageItemModel.create(mockData.MockStorageItem2); + const service = new StorageManagementOwnerService(); + let result = await service.getDeviceIdsByOwnerIdsOrNames([ + mockData.MockUser.user_name, + mockData.MockUser.user_id, + ]); + expect(result).toHaveLength(2); + }); + + test("When calling get devices by owner ids", async () => { + await schema.StorageOwnerModel.create(mockData.MockUser); + await schema.StorageOwnerModel.create(mockData.MockUser2); + await schema.StorageItemModel.create(mockData.MockStorageItem); + await schema.StorageItemModel.create(mockData.MockStorageItem2); + const service = new StorageManagementOwnerService(); + let result = await service.getDeviceIdsByOwnerIdsOrNames([ mockData.MockUser.user_id, mockData.MockUser2.user_id, ]);