Browse Source

Validate tags when creating or updating an activity

pull/7347/head
Thomas Kaul 5 days ago
parent
commit
abea328709
  1. 7
      apps/api/src/app/activities/activities.service.ts
  2. 7
      apps/api/src/services/tag/tag.service.ts
  3. 3
      libs/common/src/lib/dtos/create-order.dto.ts
  4. 3
      libs/common/src/lib/dtos/update-order.dto.ts

7
apps/api/src/app/activities/activities.service.ts

@ -109,6 +109,13 @@ export class ActivitiesService {
tags, tags,
userId userId
}: { tags: Tag[]; userId: string } & AssetProfileIdentifier) { }: { tags: Tag[]; userId: string } & AssetProfileIdentifier) {
await this.tagService.validateTagIds(
tags.map(({ id }) => {
return id;
}),
userId
);
const activities = await this.prismaService.order.findMany({ const activities = await this.prismaService.order.findMany({
where: { where: {
userId, userId,

7
apps/api/src/services/tag/tag.service.ts

@ -131,6 +131,13 @@ export class TagService {
return; return;
} }
if (!userId) {
throw new HttpException(
getReasonPhrase(StatusCodes.BAD_REQUEST),
StatusCodes.BAD_REQUEST
);
}
const uniqueTagIds = Array.from(new Set(tagIds)); const uniqueTagIds = Array.from(new Set(tagIds));
const tagsCount = await this.prismaService.tag.count({ const tagsCount = await this.prismaService.tag.count({

3
libs/common/src/lib/dtos/create-order.dto.ts

@ -4,6 +4,7 @@ import { IsCurrencyCode } from '@ghostfolio/common/validators/is-currency-code';
import { AssetClass, AssetSubClass, DataSource, Type } from '@prisma/client'; import { AssetClass, AssetSubClass, DataSource, Type } from '@prisma/client';
import { Transform, TransformFnParams } from 'class-transformer'; import { Transform, TransformFnParams } from 'class-transformer';
import { import {
ArrayUnique,
IsArray, IsArray,
IsBoolean, IsBoolean,
IsEnum, IsEnum,
@ -62,8 +63,10 @@ export class CreateOrderDto {
@IsString() @IsString()
symbol: string; symbol: string;
@ArrayUnique()
@IsArray() @IsArray()
@IsOptional() @IsOptional()
@IsString({ each: true })
tags?: string[]; tags?: string[];
@IsEnum(Type) @IsEnum(Type)

3
libs/common/src/lib/dtos/update-order.dto.ts

@ -4,6 +4,7 @@ import { IsCurrencyCode } from '@ghostfolio/common/validators/is-currency-code';
import { AssetClass, AssetSubClass, DataSource, Type } from '@prisma/client'; import { AssetClass, AssetSubClass, DataSource, Type } from '@prisma/client';
import { Transform, TransformFnParams } from 'class-transformer'; import { Transform, TransformFnParams } from 'class-transformer';
import { import {
ArrayUnique,
IsArray, IsArray,
IsEnum, IsEnum,
IsISO8601, IsISO8601,
@ -63,8 +64,10 @@ export class UpdateOrderDto {
@IsString() @IsString()
symbol: string; symbol: string;
@ArrayUnique()
@IsArray() @IsArray()
@IsOptional() @IsOptional()
@IsString({ each: true })
tags?: string[]; tags?: string[];
@IsString() @IsString()

Loading…
Cancel
Save