Browse Source

Add URL to asset profile dialog and allow updating in api

pull/3218/head
Nicolas Fedor 1 year ago
parent
commit
b69adae9c2
  1. 8
      apps/api/src/app/admin/admin.service.ts
  2. 9
      apps/api/src/app/admin/update-asset-profile.dto.ts
  3. 6
      apps/api/src/services/symbol-profile/symbol-profile.service.ts
  4. 9
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
  5. 9
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
  6. 6
      apps/client/src/app/services/admin.service.ts

8
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: {

9
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;
}

6
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 } }
});

9
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<SymbolProfile>[];
@ -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: (<Currency>(
(<unknown>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

9
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html

@ -7,6 +7,9 @@
<div class="d-flex mb-3">
<h1 class="flex-grow-1 m-0" mat-dialog-title>
{{ assetProfile?.name ?? data.symbol }}
<small *ngIf="assetProfile?.url" class="text-body-secondary"
><a target="_blank" [href]="assetProfile?.url">Go to webpage</a></small
>
</h1>
<button
class="mx-1 no-min-width px-2"
@ -215,6 +218,12 @@
<input formControlName="name" matInput type="text" />
</mat-form-field>
</div>
<div class="mt-3">
<mat-form-field appearance="outline" class="w-100 without-hint">
<mat-label i18n>URL</mat-label>
<input formControlName="url" matInput type="text" />
</mat-form-field>
</div>
<div *ngIf="assetProfile?.dataSource === 'MANUAL'" class="mt-3">
<mat-form-field appearance="outline" class="w-100 without-hint">
<mat-label i18n>Currency</mat-label>

6
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<EnhancedSymbolProfile>(
`/api/v1/admin/profile-data/${dataSource}/${symbol}`,
@ -224,7 +225,8 @@ export class AdminService {
name,
scraperConfiguration,
sectors,
symbolMapping
symbolMapping,
url
}
);
}

Loading…
Cancel
Save