universo-platform-3d

Форк
0
58 строк · 1.6 Кб
1
import { BadRequestException, Injectable } from '@nestjs/common'
2
import { InjectModel } from '@nestjs/mongoose'
3
import { keyBy } from 'lodash'
4
import { Model } from 'mongoose'
5
import { CustomDataId } from '../util/mongo-object-id-helpers'
6
import { CreateCustomDataDto } from './dto/custom-data.dto'
7
import { CustomData, CustomDataDocument } from './models/custom-data.schema'
8
import flat from 'flat'
9

10
@Injectable()
11
export class CustomDataService {
12
  constructor(
13
    @InjectModel(CustomData.name)
14
    private customDataModel: Model<CustomDataDocument>
15
  ) {}
16

17
  async createCustomData(
18
    creatorIdUser: string,
19
    customDataDto: CreateCustomDataDto
20
  ): Promise<CustomDataDocument> {
21
    const customDataDoc = new this.customDataModel({
22
      ...customDataDto,
23
      creator: creatorIdUser
24
    })
25

26
    return await customDataDoc.save()
27
  }
28

29
  async updateCustomDataAdmin(
30
    customDataId: CustomDataId,
31
    patchCustomData?: object,
32
    removeCustomDataKeys?: CustomDataId[]
33
  ): Promise<CustomDataDocument> {
34
    const updateData: any = {}
35
    if (patchCustomData) {
36
      updateData.$set = flat({
37
        data: {
38
          ...patchCustomData
39
        }
40
      })
41
    }
42
    if (removeCustomDataKeys) {
43
      updateData.$unset = updateData.$unset = flat({
44
        data: {
45
          ...keyBy(removeCustomDataKeys)
46
        }
47
      })
48
    }
49
    if (Object.keys(updateData).length === 0) {
50
      throw new BadRequestException('Nothing to update')
51
    }
52
    return await this.customDataModel
53
      .findByIdAndUpdate(customDataId, updateData, {
54
        new: true
55
      })
56
      .exec()
57
  }
58
}
59

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.