Миграция с mongo на PostgreSql

Бек написан на Nest js с бд Mongo. Делаю переход на Postgresql с использованием Prisma. Подскажите переписать данный код. Спасибо

Старая версия кода:

//Старый код модель юзера user.model.ts

export class UserModel extends TimeStamps {
    @prop({ unique: true })
    email: string

    @prop()
    password: string

    @prop({ default: false })
    isActivated: boolean

    @prop()
    activationKey: string

    @prop({ default: false })
    isAdmin?: boolean

    @prop({ default: false })
    isSubscription?: boolean

    @prop({ default: [], ref: () => MovieModel })
    favorites?: Ref<MovieModel>[]
}

//Новый код schema.prisma

model User {
  id                  Int           @id @default(autoincrement())
  createdAt           DateTime      @default(now()) @map("created_at")
  updatedAt           DateTime      @updatedAt @map("updated_at")
  email               String        @unique
  name                String?
  password            String
  //favorites как указать тип и параметры по аналогии с кодом выше?
  isAdmin             Boolean       @default(false) @map("is_admin")
  activationKey       String
  isActivated         Boolean       @default(false) @map("is_activated")
  isSubscription      Boolean?      @default(false) @map("is_subscription")
  isAutoRenewal       Boolean       @default(true) @map("is-auto_renewal")
  subscriptionEndDate DateTime?     @map("subscription_end_date")
  transactions        Transaction[]
}

//Старый код в user.service.ts

    async getAll(searchTerm?: string) {
        let options = {}

        if (searchTerm) {
            options = {
                $or: [
                    {
                        email: new RegExp(searchTerm, 'i')
                    }
                ]
            }
        }

        return this.UserModel.find(options)
            .select('-password -updatedAt -__v')
            .sort({
                createdAt: 'desc'
            })
            .exec()
    }
  
  

    async toggleFavorite(movieId: Types.ObjectId, user: UserModel) {
        const { _id, favorites } = user

        await this.UserModel.findByIdAndUpdate(_id, {
            favorites: favorites.includes(movieId)
                ? favorites.filter(id => String(id) !== String(movieId))
                : [...favorites, movieId]
        })
    }
  
  

    async getFavoriteMovies(_id: Types.ObjectId) {
        return this.UserModel.findById(_id, 'favorites')
            .populate({ path: 'favorites', populate: { path: 'genres' } })
            .exec()
            .then(data => data.favorites)
    }

введите сюда код


Ответы (0 шт):