diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index e88db6f9e..9df8cb525 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -333,12 +333,14 @@ export class AdminService { scraperConfiguration, sectors, symbol, - symbolMapping + symbolMapping, + url }: Prisma.SymbolProfileUpdateInput & UniqueAsset) { const symbolProfileOverride = { name: name as string, assetClass: assetClass as $Enums.AssetClass, - assetSubClass: assetSubClass as $Enums.AssetSubClass + assetSubClass: assetSubClass as $Enums.AssetSubClass, + url: url as string }; const updatedSymbolProfile: Prisma.SymbolProfileUpdateInput & UniqueAsset = @@ -352,7 +354,7 @@ export class AdminService { symbol, symbolMapping, ...(dataSource === 'MANUAL' - ? { name, assetClass, assetSubClass } + ? { name, assetClass, assetSubClass, url } : { SymbolProfileOverrides: { upsert: { diff --git a/apps/api/src/app/admin/update-asset-profile.dto.ts b/apps/api/src/app/admin/update-asset-profile.dto.ts index 4a0457194..507e01efb 100644 --- a/apps/api/src/app/admin/update-asset-profile.dto.ts +++ b/apps/api/src/app/admin/update-asset-profile.dto.ts @@ -5,7 +5,8 @@ import { IsISO4217CurrencyCode, IsObject, IsOptional, - IsString + IsString, + IsUrl } from 'class-validator'; export class UpdateAssetProfileDto { @@ -46,4 +47,10 @@ export class UpdateAssetProfileDto { symbolMapping?: { [dataProvider: string]: string; }; + + @IsUrl({ + protocols: ['http', 'https'] + }) + @IsOptional() + url?: string; } diff --git a/apps/api/src/services/symbol-profile/symbol-profile.service.ts b/apps/api/src/services/symbol-profile/symbol-profile.service.ts index 656b7b7e4..915b2f716 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -98,7 +98,8 @@ export class SymbolProfileService { sectors, symbol, symbolMapping, - SymbolProfileOverrides + SymbolProfileOverrides, + url }: Prisma.SymbolProfileUpdateInput & UniqueAsset) { return this.prismaService.symbolProfile.update({ data: { @@ -111,7 +112,8 @@ export class SymbolProfileService { scraperConfiguration, sectors, symbolMapping, - SymbolProfileOverrides + SymbolProfileOverrides, + url }, where: { dataSource_symbol: { dataSource, symbol } } }); diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index 352e709bd..4bcf7b627 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -64,7 +64,8 @@ export class AssetProfileDialog implements OnDestroy, OnInit { name: ['', Validators.required], scraperConfiguration: '', sectors: '', - symbolMapping: '' + symbolMapping: '', + url: '' }); public assetProfileSubClass: string; public benchmarks: Partial[]; @@ -163,7 +164,8 @@ export class AssetProfileDialog implements OnDestroy, OnInit { this.assetProfile?.scraperConfiguration ?? {} ), sectors: JSON.stringify(this.assetProfile?.sectors ?? []), - symbolMapping: JSON.stringify(this.assetProfile?.symbolMapping ?? {}) + symbolMapping: JSON.stringify(this.assetProfile?.symbolMapping ?? {}), + url: this.assetProfile?.url }); this.assetProfileForm.markAsPristine(); @@ -293,7 +295,8 @@ export class AssetProfileDialog implements OnDestroy, OnInit { currency: (( (this.assetProfileForm.controls['currency'].value) ))?.value, - name: this.assetProfileForm.controls['name'].value + name: this.assetProfileForm.controls['name'].value, + url: this.assetProfileForm.controls['url'].value }; this.adminService diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html index 56d742dff..0365f48b8 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -7,6 +7,9 @@

{{ assetProfile?.name ?? data.symbol }} + Go to webpage

+
+ + URL + + +
Currency diff --git a/apps/client/src/app/services/admin.service.ts b/apps/client/src/app/services/admin.service.ts index c850527a8..df2c0b603 100644 --- a/apps/client/src/app/services/admin.service.ts +++ b/apps/client/src/app/services/admin.service.ts @@ -211,7 +211,8 @@ export class AdminService { scraperConfiguration, sectors, symbol, - symbolMapping + symbolMapping, + url }: UniqueAsset & UpdateAssetProfileDto) { return this.http.patch( `/api/v1/admin/profile-data/${dataSource}/${symbol}`, @@ -224,7 +225,8 @@ export class AdminService { name, scraperConfiguration, sectors, - symbolMapping + symbolMapping, + url } ); }