Skip to content

Commit

Permalink
fix: allow get device ids by owner ids or names or both (#110)
Browse files Browse the repository at this point in the history
  • Loading branch information
sirily11 authored May 8, 2022
1 parent 899364a commit f514d3d
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -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";

Expand Down Expand Up @@ -147,12 +147,19 @@ export class StorageManagementOwnerService extends BaseMongoDBService<schema.ISt
}

/**
* Get list of device ids by owner ids
* Get list of device ids by owner ids or owner ids with names
* @param ownerIds
*/
async getDeviceIdsByOwnerIds(ownerIds: string[]): Promise<string[]> {
async getDeviceIdsByOwnerIdsOrNames(ownerIds: string[]): Promise<string[]> {
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();
Expand Down
45 changes: 41 additions & 4 deletions packages/etd-services/src/tests/mongodb/storage/owner.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
Expand All @@ -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);
});

Expand All @@ -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,
]);
Expand Down

0 comments on commit f514d3d

Please sign in to comment.