Skip to content

Commit 75e5745

Browse files
Merge pull request #1085 from credebl/develop-dco-fixed
refactor: get all cred defs by orgId functionality (#1084)
2 parents 47d7fe4 + 5299c72 commit 75e5745

File tree

2 files changed

+46
-5
lines changed

2 files changed

+46
-5
lines changed

apps/ledger/src/credential-definition/credential-definition.service.ts

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { CACHE_MANAGER } from '@nestjs/cache-manager';
2020
import { ICredDefDetails, IPlatformCredDefsData } from '@credebl/common/interfaces/cred-def.interface';
2121
import { NATSClient } from '@credebl/common/NATSClient';
2222
import { from } from 'rxjs';
23+
import { ISchemaDetail } from '@credebl/common/interfaces/schema.interface';
2324
@Injectable()
2425
export class CredentialDefinitionService extends BaseService {
2526
constructor(
@@ -284,26 +285,62 @@ export class CredentialDefinitionService extends BaseService {
284285
try {
285286
const { credDefSearchCriteria, orgId } = payload;
286287
const response = await this.credentialDefinitionRepository.getAllCredDefs(credDefSearchCriteria, orgId);
288+
289+
const schemaIds = response?.map((item) => item?.schemaLedgerId);
290+
291+
const schemaDetails = await this._getSchemaDetails(schemaIds);
292+
293+
const archivedSchemaIds = schemaDetails
294+
.filter((schema) => schema.isSchemaArchived)
295+
.map((schema) => schema.schemaLedgerId);
296+
297+
const filteredResponse = response.filter(
298+
(credDef) => !archivedSchemaIds.includes(credDef.schemaLedgerId)
299+
);
300+
287301
const credDefResponse = {
288-
totalItems: response.length,
302+
totalItems: filteredResponse.length,
289303
hasNextPage: credDefSearchCriteria.pageSize * credDefSearchCriteria.pageNumber < response.length,
290304
hasPreviousPage: 1 < credDefSearchCriteria.pageNumber,
291305
nextPage: credDefSearchCriteria.pageNumber + 1,
292306
previousPage: credDefSearchCriteria.pageNumber - 1,
293307
lastPage: Math.ceil(response.length / credDefSearchCriteria.pageSize),
294-
data: response
308+
data: filteredResponse
295309
};
296-
297-
if (0 == response.length) {
310+
311+
if (0 === filteredResponse.length) {
298312
throw new NotFoundException(ResponseMessages.credentialDefinition.error.NotFound);
299313
}
314+
300315
return credDefResponse;
301-
302316
} catch (error) {
303317
this.logger.error(`Error in retrieving credential definitions: ${error}`);
304318
throw new RpcException(error.response ? error.response : error);
305319
}
306320
}
321+
322+
async _getSchemaDetails(schemaIds: string[]): Promise<ISchemaDetail[]> {
323+
const pattern = { cmd: 'get-schemas-details' };
324+
325+
const payload = {
326+
templateIds: schemaIds
327+
};
328+
329+
const getSchemaDetails = await this.credDefServiceProxy
330+
.send(pattern, payload)
331+
.toPromise()
332+
.catch((error) => {
333+
this.logger.error(`catch: ${JSON.stringify(error)}`);
334+
throw new HttpException(
335+
{
336+
status: error.status,
337+
error: error.message
338+
},
339+
error.status
340+
);
341+
});
342+
return getSchemaDetails;
343+
}
307344

308345
async getCredentialDefinitionBySchemaId(payload: GetCredDefBySchemaId): Promise<credential_definition[]> {
309346
try {

libs/common/src/interfaces/schema.interface.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ export interface ISchemasWithPagination extends IPaginationDetails{
6262
orgId: string;
6363
ledgerId: string;
6464
type: string;
65+
isSchemaArchived: boolean,
66+
organisation: {
67+
name: string
68+
}
6569
}
6670

6771
export interface IPlatformSchemas {

0 commit comments

Comments
 (0)