Миграция с 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)
}
введите сюда код