Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | 36x 36x 36x 36x 10x 6x 8x 8x 8x 8x 8x 1x 7x | import { Asset, Cardano, Milliseconds } from '@cardano-sdk/core';
import { AssetPolicyIdAndName, NftMetadataService } from './types';
import { NftMetadataEntity } from '@cardano-sdk/projection-typeorm';
import { QueryRunner } from 'typeorm';
import { TypeormProviderDependencies, TypeormService } from '../util';
export class TypeOrmNftMetadataService extends TypeormService implements NftMetadataService {
constructor({ connectionConfig$, logger, entities }: TypeormProviderDependencies) {
super('TypeOrmNftMetadataService', { connectionConfig$, connectionTimeout: Milliseconds(1000), entities, logger });
}
async getNftMetadata(assetInfo: AssetPolicyIdAndName): Promise<Asset.NftMetadata | null> {
return this.withQueryRunner((queryRunner) => this.getNftMetadataWith(assetInfo, queryRunner));
}
async getNftMetadataWith(assetInfo: AssetPolicyIdAndName, queryRunner: QueryRunner) {
const assetId = Cardano.AssetId.fromParts(assetInfo.policyId, assetInfo.name);
let asset: NftMetadataEntity | null;
try {
const nftMetadataRepository = queryRunner.manager.getRepository(NftMetadataEntity);
asset = await nftMetadataRepository.findOneBy({
userTokenAsset: { id: assetId }
});
} catch (error) {
this.logger.error(error);
asset = null;
}
if (!asset) {
return null;
}
return {
image: asset.image!,
name: asset.name!,
...(asset.description && { description: asset.description }),
...(asset.files && { files: asset.files }),
...(asset.mediaType && { mediaType: asset.mediaType as Asset.ImageMediaType }),
...(asset.otherProperties && { otherProperties: asset.otherProperties }),
version: asset.otherProperties?.get('version') as string
};
}
}
|