diff --git a/.gitignore b/.gitignore index 4b56acf..78cff21 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,5 @@ pids # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +/generated/prisma diff --git a/package.json b/package.json index cd470fc..767823f 100644 --- a/package.json +++ b/package.json @@ -25,13 +25,12 @@ "@nestjs/core": "^11.0.1", "@nestjs/mapped-types": "*", "@nestjs/platform-express": "^11.0.1", - "@nestjs/typeorm": "^11.0.0", + "@prisma/client": "^6.9.0", "class-transformer": "^0.5.1", "class-validator": "^0.14.2", - "pg": "^8.16.0", + "prisma": "^6.9.0", "reflect-metadata": "^0.2.2", - "rxjs": "^7.8.1", - "typeorm": "^0.3.24" + "rxjs": "^7.8.1" }, "devDependencies": { "@eslint/eslintrc": "^3.2.0", diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000..f2f4c3a --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,84 @@ +generator client { + provider = "prisma-client-js" + output = "../generated/prisma" +} + +datasource db { + provider = "postgresql" + url = env("POSTGRES_URI") +} + +model Movie { + id String @id @default(uuid()) + + title String + description String? + + releaseYear Int @map("release_year") + rating Float @default(0.0) + + isAvailabel Boolean @default(false) @map("is_available") + + genre Genre @default(DRAMMA) + + poster MoviePoster @relation(fields: [posterId], references: [id]) + posterId String @unique @map("poster_id") + + reviews Review[] @relation("movie_reviews") + actors Actor[] @relation("movie_actors") + + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + + @@index([releaseYear, title]) + @@map("movies") +} + +model MoviePoster { + id String @id @default(uuid()) + + url String + + movie Movie? @relation() + + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + + @@map("movie_posters") +} + +model Review { + id String @id @default(uuid()) + + text String + rating Decimal @default(0.0) + + movie Movie @relation("movie_reviews", fields: [movieId], references: [id], onDelete: Cascade) + movieId String @map("movie_id") + + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + + @@map("reviews") +} + +model Actor { + id String @id @default(uuid()) + + name String + movies Movie[] @relation("movie_actors") + + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + + @@map("actors") +} + +enum Genre { + ACTION + COMEDY + DRAMMA + HORROR + + @@map("enum_genres") +} diff --git a/src/actor/actor.controller.ts b/src/actor/actor.controller.ts index 0cd2e64..d8bb443 100644 --- a/src/actor/actor.controller.ts +++ b/src/actor/actor.controller.ts @@ -1,6 +1,6 @@ import { Body, Controller, Post } from '@nestjs/common'; import { ActorService } from './actor.service'; -import { CreateActorDto } from './entitites/create-actor.dto'; +import { CreateActorDto } from './dto/create-actor.dto'; @Controller('actors') export class ActorController { diff --git a/src/actor/actor.module.ts b/src/actor/actor.module.ts index 207ad6a..f637ec2 100644 --- a/src/actor/actor.module.ts +++ b/src/actor/actor.module.ts @@ -1,12 +1,8 @@ import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { MovieEntity } from '../movie/entities/movie.entity'; import { ActorService } from './actor.service'; import { ActorController } from './actor.controller'; -import { ActorEntity } from './entitites/actor.entity'; @Module({ - imports: [TypeOrmModule.forFeature([ActorEntity, MovieEntity])], controllers: [ActorController], providers: [ActorService], }) diff --git a/src/actor/actor.service.ts b/src/actor/actor.service.ts index 952823c..dc32019 100644 --- a/src/actor/actor.service.ts +++ b/src/actor/actor.service.ts @@ -1,18 +1,18 @@ import { Injectable } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; -import { ActorEntity } from './entitites/actor.entity'; -import { CreateActorDto } from './entitites/create-actor.dto'; +import { Actor } from 'generated/prisma'; +import { PrismaService } from '../prisma/prisma.service'; +import { CreateActorDto } from './dto/create-actor.dto'; @Injectable() export class ActorService { - constructor( - @InjectRepository(ActorEntity) - private readonly actorRepository: Repository, - ) {} + constructor(private prismaService: PrismaService) {} - async create(dto: CreateActorDto) { - const actor = this.actorRepository.create(dto); - return this.actorRepository.save(actor); + async create(dto: CreateActorDto): Promise { + const { name } = dto; + return this.prismaService.actor.create({ + data: { + name, + }, + }); } } diff --git a/src/actor/entitites/create-actor.dto.ts b/src/actor/dto/create-actor.dto.ts similarity index 100% rename from src/actor/entitites/create-actor.dto.ts rename to src/actor/dto/create-actor.dto.ts diff --git a/src/actor/entitites/actor.entity.ts b/src/actor/entitites/actor.entity.ts deleted file mode 100644 index f4ac032..0000000 --- a/src/actor/entitites/actor.entity.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { - Column, - CreateDateColumn, - Entity, - ManyToMany, - PrimaryGeneratedColumn, - UpdateDateColumn, -} from 'typeorm'; -import { MovieEntity } from '../../movie/entities/movie.entity'; - -@Entity({ name: 'actors' }) -export class ActorEntity { - @PrimaryGeneratedColumn('uuid') - id: string; - - @Column({ - type: 'varchar', - length: 64, - }) - name: string; - - @ManyToMany(() => MovieEntity, (movie) => movie.actors) - movies: MovieEntity[]; - - @CreateDateColumn({ name: 'created_at' }) - createdAt: Date; - - @UpdateDateColumn({ name: 'updated_at' }) - updatedAt: Date; -} diff --git a/src/app.module.ts b/src/app.module.ts index c1b5d9a..c47db84 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -1,22 +1,17 @@ import { Module } from '@nestjs/common'; -import { ConfigModule, ConfigService } from '@nestjs/config'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { getTypeOrmConfig } from './config/typeorm.config'; +import { ConfigModule } from '@nestjs/config'; import { TaskModule } from './task/task.module'; import { MovieModule } from './movie/movie.module'; import { ReviewModule } from './review/review.module'; import { ActorModule } from './actor/actor.module'; +import { PrismaModule } from './prisma/prisma.module'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, }), - TypeOrmModule.forRootAsync({ - imports: [ConfigModule], - useFactory: getTypeOrmConfig, - inject: [ConfigService], - }), + PrismaModule, TaskModule, MovieModule, ReviewModule, diff --git a/src/config/typeorm.config.ts b/src/config/typeorm.config.ts deleted file mode 100644 index e94636b..0000000 --- a/src/config/typeorm.config.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ConfigService } from '@nestjs/config'; -import { TypeOrmModuleOptions } from '@nestjs/typeorm'; - -export function getTypeOrmConfig( - configService: ConfigService, -): TypeOrmModuleOptions { - return { - type: 'postgres', - host: configService.getOrThrow('POSTGRES_HOST'), - port: configService.getOrThrow('POSTGRES_PORT'), - username: configService.getOrThrow('POSTGRES_USER'), - password: configService.getOrThrow('POSTGRES_PASSWORD'), - database: configService.getOrThrow('POSTGRES_DATABASE'), - autoLoadEntities: true, - synchronize: true, - }; -} diff --git a/src/movie/dto/movie.dto.ts b/src/movie/dto/movie.dto.ts index b56989e..259efac 100644 --- a/src/movie/dto/movie.dto.ts +++ b/src/movie/dto/movie.dto.ts @@ -8,7 +8,7 @@ import { Max, Min, } from 'class-validator'; -import { ActorEntity } from '../../actor/entitites/actor.entity'; +import { Actor } from 'generated/prisma'; export class MovieDto { @IsNotEmpty() @@ -23,7 +23,7 @@ export class MovieDto { @IsArray() @IsUUID('4', { each: true }) - actorIds: ActorEntity['id'][]; + actorIds: Actor['id'][]; @IsUrl() imageUrl: string; diff --git a/src/movie/entities/movie.entity.ts b/src/movie/entities/movie.entity.ts deleted file mode 100644 index ec264e3..0000000 --- a/src/movie/entities/movie.entity.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { - Column, - CreateDateColumn, - Entity, - JoinColumn, - JoinTable, - ManyToMany, - OneToMany, - OneToOne, - PrimaryGeneratedColumn, - UpdateDateColumn, -} from 'typeorm'; -import { ActorEntity } from '../../actor/entitites/actor.entity'; -import { ReviewEntity } from '../../review/entities/review.entity'; -import { MoviePosterEntity } from './poster.entity'; - -export enum Genre { - ACTION = 'action', - COMEDY = 'comedy', - DRAMA = 'drama', -} - -@Entity({ name: 'movies' }) -export class MovieEntity { - @PrimaryGeneratedColumn('uuid') - id: string; - - @Column({ - type: 'varchar', - length: 128, - nullable: true, // todo - }) - title: string; - - @Column({ - type: 'text', - nullable: true, - }) - description: string; - - @Column({ - name: 'is_available', - type: 'boolean', - default: false, - }) - isAvailable: boolean; - - @Column({ - type: 'decimal', - precision: 3, - scale: 1, - default: 0, - }) - rating: number; - - @ManyToMany(() => ActorEntity, (actor) => actor.movies) - @JoinTable({ - name: 'movie_actors', - joinColumn: { - name: 'movie_id', - referencedColumnName: 'id', - }, - inverseJoinColumn: { - name: 'actor_id', - referencedColumnName: 'id', - }, - }) - actors: ActorEntity[]; - - @Column({ name: 'poster_id', type: 'uuid', nullable: true }) - posterId: string; - - @OneToOne(() => MoviePosterEntity, (poster) => poster.movie, { - onDelete: 'CASCADE', - }) - @JoinColumn({ name: 'poster_id' }) - poster: MoviePosterEntity; - - @Column({ - name: 'release_year', - type: 'int', - unsigned: true, - }) - releaseYear: number; - - @Column({ - type: 'enum', - enum: Genre, - nullable: true, - }) - genre: Genre; - - @Column({ - name: 'release_date', - type: 'date', - nullable: true, - }) - releaseDate: string; - - @OneToMany(() => ReviewEntity, (review) => review.movie) - reviews: ReviewEntity[]; - - @CreateDateColumn({ - name: 'created_at', - }) - createdAt: Date; - - @UpdateDateColumn({ - name: 'updated_at', - }) - updatedAt: Date; -} diff --git a/src/movie/entities/poster.entity.ts b/src/movie/entities/poster.entity.ts deleted file mode 100644 index de554a0..0000000 --- a/src/movie/entities/poster.entity.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { - Column, - CreateDateColumn, - Entity, - OneToOne, - PrimaryGeneratedColumn, -} from 'typeorm'; -import { MovieEntity } from './movie.entity'; - -@Entity({ name: 'movie_posters' }) -export class MoviePosterEntity { - @PrimaryGeneratedColumn('uuid') - id: string; - - @Column({ - type: 'varchar', - length: 255, - }) - url: string; - - @OneToOne(() => MovieEntity, (movie) => movie.poster) - movie: MovieEntity; - - @CreateDateColumn({ name: 'created_at' }) - createdAt: Date; -} diff --git a/src/movie/movie.controller.ts b/src/movie/movie.controller.ts index 26ccf07..2c5abe1 100644 --- a/src/movie/movie.controller.ts +++ b/src/movie/movie.controller.ts @@ -8,8 +8,8 @@ import { Put, } from '@nestjs/common'; import { MovieDto } from './dto/movie.dto'; -import { MovieEntity } from './entities/movie.entity'; import { MovieService } from './movie.service'; +import { Movie } from 'generated/prisma'; @Controller('movies') export class MovieController { @@ -21,7 +21,7 @@ export class MovieController { } @Get(':id') - public findById(@Param('id') id: MovieEntity['id']) { + public findById(@Param('id') id: Movie['id']) { return this.movieService.findById(id); } @@ -31,12 +31,12 @@ export class MovieController { } @Put(':id') - public update(@Body() dto: MovieDto, @Param('id') id: MovieEntity['id']) { + public update(@Body() dto: MovieDto, @Param('id') id: Movie['id']) { return this.movieService.update(id, dto); } @Delete(':id') - public delete(@Param('id') id: MovieEntity['id']) { + public delete(@Param('id') id: Movie['id']) { return this.movieService.delete(id); } } diff --git a/src/movie/movie.module.ts b/src/movie/movie.module.ts index 48a5c24..4fb044b 100644 --- a/src/movie/movie.module.ts +++ b/src/movie/movie.module.ts @@ -1,15 +1,8 @@ import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { ActorEntity } from '../actor/entitites/actor.entity'; -import { MovieEntity } from './entities/movie.entity'; -import { MoviePosterEntity } from './entities/poster.entity'; import { MovieService } from './movie.service'; import { MovieController } from './movie.controller'; @Module({ - imports: [ - TypeOrmModule.forFeature([MovieEntity, ActorEntity, MoviePosterEntity]), - ], controllers: [MovieController], providers: [MovieService], }) diff --git a/src/movie/movie.service.ts b/src/movie/movie.service.ts index 53c8d6a..7cb2af0 100644 --- a/src/movie/movie.service.ts +++ b/src/movie/movie.service.ts @@ -1,38 +1,40 @@ import { Injectable, NotFoundException } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { In, Repository } from 'typeorm'; -import { ActorEntity } from '../actor/entitites/actor.entity'; +import { PrismaService } from '../prisma/prisma.service'; import { MovieDto } from './dto/movie.dto'; -import { MovieEntity } from './entities/movie.entity'; -import { MoviePosterEntity } from './entities/poster.entity'; +import { Movie } from 'generated/prisma'; @Injectable() export class MovieService { - constructor( - @InjectRepository(MovieEntity) - private readonly movieRepository: Repository, + constructor(private prismaService: PrismaService) {} - @InjectRepository(ActorEntity) - private readonly actorRepository: Repository, - - @InjectRepository(MoviePosterEntity) - private readonly moviePosterRepository: Repository, - ) {} - - async findAll(): Promise { - return await this.movieRepository.find({ - order: { - id: 'ASC', + async findAll() { + return this.prismaService.movie.findMany({ + orderBy: { + id: 'asc', + }, + select: { + id: true, + title: true, + actors: { + select: { + id: true, + name: true, + }, + }, }, - relations: ['actors'], }); } - async findById(id: MovieEntity['id']): Promise { - const movie = await this.movieRepository.findOne({ + async findById(id: Movie['id']): Promise { + const movie = await this.prismaService.movie.findUnique({ where: { id }, - relations: ['actors'], + include: { + actors: true, + poster: true, + reviews: true, + }, }); + if (!movie) { throw new NotFoundException(`Not found movie with id ${id}`); } @@ -42,38 +44,66 @@ export class MovieService { async create(dto: MovieDto) { const { actorIds, releaseYear, title, imageUrl } = dto; - const actors = await this.actorRepository.find({ + const actors = await this.prismaService.actor.findMany({ where: { - id: In(actorIds), + id: { in: actorIds }, }, }); if (!actors || actors.length === 0) { throw new NotFoundException('Not found actors'); } - const poster = this.moviePosterRepository.create({ url: imageUrl }); - await this.moviePosterRepository.save(poster); - - const movie = this.movieRepository.create({ - title, - releaseYear, - actors, - poster, + return this.prismaService.movie.create({ + data: { + title, + releaseYear, + actors: { + connect: actors.map((actor) => ({ + id: actor.id, + })), + }, + poster: { + create: { + url: imageUrl, + }, + }, + }, }); - return this.movieRepository.save(movie); } - async update(id: MovieEntity['id'], dto: MovieDto): Promise { + async update(id: Movie['id'], dto: MovieDto): Promise { const movie = await this.findById(id); - Object.assign(movie, dto); - await this.movieRepository.save(movie); + const actors = await this.prismaService.actor.findMany({ + where: { + id: { in: dto.actorIds }, + }, + }); + await this.prismaService.movie.update({ + where: { id: movie.id }, + data: { + title: dto.title, + releaseYear: dto.releaseYear, + poster: { + create: { + url: dto.imageUrl, + }, + }, + actors: { + connect: actors.map((actor) => ({ id: actor.id })), + }, + }, + }); return true; } - async delete(id: MovieEntity['id']): Promise { + async delete(id: Movie['id']): Promise { const movie = await this.findById(id); - await this.movieRepository.remove(movie); + await this.prismaService.movie.delete({ + where: { + id: movie.id, + }, + }); return movie; } diff --git a/src/prisma/prisma.module.ts b/src/prisma/prisma.module.ts new file mode 100644 index 0000000..7207426 --- /dev/null +++ b/src/prisma/prisma.module.ts @@ -0,0 +1,9 @@ +import { Global, Module } from '@nestjs/common'; +import { PrismaService } from './prisma.service'; + +@Global() +@Module({ + providers: [PrismaService], + exports: [PrismaService], +}) +export class PrismaModule {} diff --git a/src/prisma/prisma.service.ts b/src/prisma/prisma.service.ts new file mode 100644 index 0000000..32d19e3 --- /dev/null +++ b/src/prisma/prisma.service.ts @@ -0,0 +1,16 @@ +import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common'; +import { PrismaClient } from 'generated/prisma'; + +@Injectable() +export class PrismaService + extends PrismaClient + implements OnModuleInit, OnModuleDestroy +{ + async onModuleInit() { + await this.$connect(); + } + + async onModuleDestroy() { + await this.$disconnect(); + } +} diff --git a/src/review/dto/create-review.dto.ts b/src/review/dto/create-review.dto.ts index 0ddd785..651ea23 100644 --- a/src/review/dto/create-review.dto.ts +++ b/src/review/dto/create-review.dto.ts @@ -1,17 +1,17 @@ import { IsNotEmpty, IsString, IsUUID, Max, Min } from 'class-validator'; -import { ReviewEntity } from '../entities/review.entity'; +import { Review } from 'generated/prisma'; export class CreateReviewDto { @IsNotEmpty() @IsString() - text: ReviewEntity['text']; + text: Review['text']; @IsNotEmpty() @Min(0) @Max(10) - rating: ReviewEntity['rating']; + rating: Review['rating']; @IsNotEmpty() @IsUUID() - movieId: ReviewEntity['movieId']; + movieId: Review['movieId']; } diff --git a/src/review/entities/review.entity.ts b/src/review/entities/review.entity.ts deleted file mode 100644 index 434183f..0000000 --- a/src/review/entities/review.entity.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { - Column, - CreateDateColumn, - Entity, - JoinColumn, - ManyToOne, - PrimaryGeneratedColumn, - UpdateDateColumn, -} from 'typeorm'; -import { MovieEntity } from '../../movie/entities/movie.entity'; - -@Entity({ name: 'reviews' }) -export class ReviewEntity { - @PrimaryGeneratedColumn('uuid') - id: string; - - @Column({ - type: 'text', - }) - text: string; - - @Column({ - type: 'decimal', - precision: 3, - scale: 1, - }) - rating: number; - - @Column({ - name: 'movie_id', - type: 'uuid', - }) - @JoinColumn({ - name: 'movie_id', - }) - movieId: MovieEntity['id']; - - @ManyToOne(() => MovieEntity, (movie) => movie.reviews, { - onDelete: 'CASCADE', - }) - movie: MovieEntity; - - @CreateDateColumn({ - name: 'created_at', - }) - createdAt: Date; - - @UpdateDateColumn({ - name: 'updated_at', - }) - updatedAt: Date; -} diff --git a/src/review/review.module.ts b/src/review/review.module.ts index 6a03489..f292f1d 100644 --- a/src/review/review.module.ts +++ b/src/review/review.module.ts @@ -1,22 +1,9 @@ import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { ActorEntity } from '../actor/entitites/actor.entity'; -import { MovieEntity } from '../movie/entities/movie.entity'; -import { MoviePosterEntity } from '../movie/entities/poster.entity'; import { MovieService } from '../movie/movie.service'; -import { ReviewEntity } from './entities/review.entity'; import { ReviewService } from './review.service'; import { ReviewController } from './review.controller'; @Module({ - imports: [ - TypeOrmModule.forFeature([ - ReviewEntity, - MovieEntity, - ActorEntity, - MoviePosterEntity, - ]), - ], controllers: [ReviewController], providers: [ReviewService, MovieService], }) diff --git a/src/review/review.service.ts b/src/review/review.service.ts index 8f3104d..61a5bb9 100644 --- a/src/review/review.service.ts +++ b/src/review/review.service.ts @@ -1,33 +1,29 @@ import { Injectable } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; -import { MovieService } from '../movie/movie.service'; +import { Review } from 'generated/prisma'; +import { PrismaService } from 'src/prisma/prisma.service'; import { CreateReviewDto } from './dto/create-review.dto'; -import { ReviewEntity } from './entities/review.entity'; @Injectable() export class ReviewService { - constructor( - @InjectRepository(ReviewEntity) - private readonly reviewRepository: Repository, + constructor(private readonly prismaService: PrismaService) {} - private readonly movieService: MovieService, - ) {} - - async findAll(): Promise { - return this.reviewRepository.find({}); + async findAll(): Promise { + return this.prismaService.review.findMany(); } - async create(dto: CreateReviewDto): Promise { + async create(dto: CreateReviewDto): Promise { const { movieId, rating, text } = dto; - const movie = await this.movieService.findById(movieId); - const review = this.reviewRepository.create({ - text, - rating, - movie, - movieId, + return this.prismaService.review.create({ + data: { + text, + rating, + movie: { + connect: { + id: movieId, + }, + }, + }, }); - return await this.reviewRepository.save(review); } } diff --git a/yarn.lock b/yarn.lock index b008fba..ef0266d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1051,11 +1051,6 @@ dependencies: tslib "2.8.1" -"@nestjs/typeorm@^11.0.0": - version "11.0.0" - resolved "https://registry.yarnpkg.com/@nestjs/typeorm/-/typeorm-11.0.0.tgz#b0f45d6902396db89e0ac1f4e738c2ff3407b794" - integrity sha512-SOeUQl70Lb2OfhGkvnh4KXWlsd+zA08RuuQgT7kKbzivngxzSo1Oc7Usu5VxCxACQC9wc2l9esOHILSJeK7rJA== - "@noble/hashes@^1.1.5": version "1.8.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" @@ -1096,16 +1091,59 @@ dependencies: "@noble/hashes" "^1.1.5" -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - "@pkgr/core@^0.2.4": version "0.2.7" resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.7.tgz#eb5014dfd0b03e7f3ba2eeeff506eed89b028058" integrity sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg== +"@prisma/client@^6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@prisma/client/-/client-6.9.0.tgz#3779ba71a4c9fe8c329506f126dc70b71410c358" + integrity sha512-Gg7j1hwy3SgF1KHrh0PZsYvAaykeR0PaxusnLXydehS96voYCGt1U5zVR31NIouYc63hWzidcrir1a7AIyCsNQ== + +"@prisma/config@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@prisma/config/-/config-6.9.0.tgz#c3072b38cd65a88ea82b41d07e1a5e5fef592d8d" + integrity sha512-Wcfk8/lN3WRJd5w4jmNQkUwhUw0eksaU/+BlAJwPQKW10k0h0LC9PD/6TQFmqKVbHQL0vG2z266r0S1MPzzhbA== + dependencies: + jiti "2.4.2" + +"@prisma/debug@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-6.9.0.tgz#0c69adb1272259da29374f758372eac7621ef9ac" + integrity sha512-bFeur/qi/Q+Mqk4JdQ3R38upSYPebv5aOyD1RKywVD+rAMLtRkmTFn28ZuTtVOnZHEdtxnNOCH+bPIeSGz1+Fg== + +"@prisma/engines-version@6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e": + version "6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e" + resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e.tgz#360c7132f2083cafcb39f37ab4debea6189707d4" + integrity sha512-Qp9gMoBHgqhKlrvumZWujmuD7q4DV/gooEyPCLtbkc13EZdSz2RsGUJ5mHb3RJgAbk+dm6XenqG7obJEhXcJ6Q== + +"@prisma/engines@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-6.9.0.tgz#35c69f95ff47de852d261c5ef626c46c922a9200" + integrity sha512-im0X0bwDLA0244CDf8fuvnLuCQcBBdAGgr+ByvGfQY9wWl6EA+kRGwVk8ZIpG65rnlOwtaWIr/ZcEU5pNVvq9g== + dependencies: + "@prisma/debug" "6.9.0" + "@prisma/engines-version" "6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e" + "@prisma/fetch-engine" "6.9.0" + "@prisma/get-platform" "6.9.0" + +"@prisma/fetch-engine@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-6.9.0.tgz#0559705b2787da9864ba910ddc51a428591236d7" + integrity sha512-PMKhJdl4fOdeE3J3NkcWZ+tf3W6rx3ht/rLU8w4SXFRcLhd5+3VcqY4Kslpdm8osca4ej3gTfB3+cSk5pGxgFg== + dependencies: + "@prisma/debug" "6.9.0" + "@prisma/engines-version" "6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e" + "@prisma/get-platform" "6.9.0" + +"@prisma/get-platform@6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-6.9.0.tgz#f0b02707930ebebd9d2ccf536280301a35a0f859" + integrity sha512-/B4n+5V1LI/1JQcHp+sUpyRT1bBgZVPHbsC4lt4/19Xp4jvNIVcq5KYNtQDk5e/ukTSjo9PZVAxxy9ieFtlpTQ== + dependencies: + "@prisma/debug" "6.9.0" + "@sec-ant/readable-stream@^0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz#60de891bb126abfdc5410fdc6166aca065f10a0c" @@ -1135,11 +1173,6 @@ dependencies: "@sinonjs/commons" "^3.0.0" -"@sqltools/formatter@^1.2.5": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.5.tgz#3abc203c79b8c3e90fd6c156a0c62d5403520e12" - integrity sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw== - "@swc/cli@^0.6.0": version "0.6.0" resolved "https://registry.yarnpkg.com/@swc/cli/-/cli-0.6.0.tgz#fe986a436797c9d3850938366dbd660c9ba1101f" @@ -1939,7 +1972,7 @@ ansi-styles@^6.1.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== -ansis@3.17.0, ansis@^3.17.0: +ansis@3.17.0: version "3.17.0" resolved "https://registry.yarnpkg.com/ansis/-/ansis-3.17.0.tgz#fa8d9c2a93fe7d1177e0c17f9eeb562a58a832d7" integrity sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg== @@ -1952,11 +1985,6 @@ anymatch@^3.0.3: normalize-path "^3.0.0" picomatch "^2.0.4" -app-root-path@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.1.0.tgz#5971a2fc12ba170369a7a1ef018c71e6e47c2e86" - integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== - append-field@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" @@ -2192,14 +2220,6 @@ buffer@^5.2.1, buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - busboy@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" @@ -2534,11 +2554,6 @@ cross-spawn@^7.0.3, cross-spawn@^7.0.6: shebang-command "^2.0.0" which "^2.0.1" -dayjs@^1.11.13: - version "1.11.13" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" - integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== - debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0: version "4.4.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" @@ -2553,7 +2568,7 @@ decompress-response@^6.0.0: dependencies: mimic-response "^3.1.0" -dedent@^1.0.0, dedent@^1.6.0: +dedent@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.6.0.tgz#79d52d6389b1ffa67d2bcef59ba51847a9d503b2" integrity sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA== @@ -2630,7 +2645,7 @@ dotenv@16.4.7: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== -dotenv@^16.4.5, dotenv@^16.4.7: +dotenv@^16.4.5: version "16.5.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.5.0.tgz#092b49f25f808f020050051d1ff258e404c78692" integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg== @@ -3312,18 +3327,6 @@ glob@11.0.1: package-json-from-dist "^1.0.0" path-scurry "^2.0.0" -glob@^10.4.5: - version "10.4.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" - integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -3504,7 +3507,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3658,15 +3661,6 @@ iterare@1.2.1: resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042" integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - jackspeak@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.1.1.tgz#96876030f450502047fc7e8c7fcf8ce8124e43ae" @@ -4051,6 +4045,11 @@ jest@^29.7.0: import-local "^3.0.2" jest-cli "^29.7.0" +jiti@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560" + integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A== + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4212,11 +4211,6 @@ lowercase-keys@^3.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== -lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - lru-cache@^11.0.0: version "11.1.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.1.0.tgz#afafb060607108132dbc1cf8ae661afb69486117" @@ -4382,7 +4376,7 @@ minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: +minipass@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== @@ -4619,14 +4613,6 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" @@ -4660,62 +4646,6 @@ pend@~1.2.0: resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== -pg-cloudflare@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.2.5.tgz#2e3649c38a7a9c74a7e5327c8098a2fd9af595bd" - integrity sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg== - -pg-connection-string@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.9.0.tgz#f75e06591fdd42ec7636fe2c6a03febeedbec9bf" - integrity sha512-P2DEBKuvh5RClafLngkAuGe9OUlFV7ebu8w1kmaaOgPcpJd1RIFh7otETfI6hAR8YupOLFTY7nuvvIn7PLciUQ== - -pg-int8@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" - integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== - -pg-pool@^3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.10.0.tgz#134b0213755c5e7135152976488aa7cd7ee1268d" - integrity sha512-DzZ26On4sQ0KmqnO34muPcmKbhrjmyiO4lCCR0VwEd7MjmiKf5NTg/6+apUEu0NF7ESa37CGzFxH513CoUmWnA== - -pg-protocol@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.10.0.tgz#a473afcbb1c6e5dc3ac24869ba3dd563f8a1ae1b" - integrity sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q== - -pg-types@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" - integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== - dependencies: - pg-int8 "1.0.1" - postgres-array "~2.0.0" - postgres-bytea "~1.0.0" - postgres-date "~1.0.4" - postgres-interval "^1.1.0" - -pg@^8.16.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/pg/-/pg-8.16.0.tgz#40b08eedb5eb1834252cf3e3629503e32e6c6c04" - integrity sha512-7SKfdvP8CTNXjMUzfcVTaI+TDzBEeaUnVwiVGZQD1Hh33Kpev7liQba9uLd4CfN8r9mCVsD0JIpq03+Unpz+kg== - dependencies: - pg-connection-string "^2.9.0" - pg-pool "^3.10.0" - pg-protocol "^1.10.0" - pg-types "2.2.0" - pgpass "1.0.5" - optionalDependencies: - pg-cloudflare "^1.2.5" - -pgpass@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" - integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== - dependencies: - split2 "^4.1.0" - picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" @@ -4755,28 +4685,6 @@ pluralize@8.0.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -postgres-array@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" - integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== - -postgres-bytea@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" - integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== - -postgres-date@~1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" - integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== - -postgres-interval@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" - integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== - dependencies: - xtend "^4.0.0" - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -4803,6 +4711,14 @@ pretty-format@^29.0.0, pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" +prisma@^6.9.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/prisma/-/prisma-6.9.0.tgz#c8bce4fc63f0c6972f3868692e649bb163fd807d" + integrity sha512-resJAwMyZREC/I40LF6FZ6rZTnlrlrYrb63oW37Gq+U+9xHwbyMSPJjKtM7VZf3gTO86t/Oyz+YeSXr3CmAY1Q== + dependencies: + "@prisma/config" "6.9.0" + "@prisma/engines" "6.9.0" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -5013,7 +4929,7 @@ rxjs@^7.8.1: dependencies: tslib "^2.1.0" -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -5115,14 +5031,6 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.4.11: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -5235,21 +5143,11 @@ source-map@^0.6.0, source-map@^0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -split2@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" - integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -sql-highlight@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/sql-highlight/-/sql-highlight-6.0.0.tgz#e62977ed5c7a1644634a1554b8588ee42611a4be" - integrity sha512-+fLpbAbWkQ+d0JEchJT/NrRRXbYRNbG15gFpANx73EwxQB1PRjj+k/OI0GTU0J63g8ikGkJECQp9z8XEJZvPRw== - stack-utils@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" @@ -5608,7 +5506,7 @@ tsconfig-paths@4.2.0, tsconfig-paths@^4.1.2, tsconfig-paths@^4.2.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2.8.1, tslib@^2.1.0, tslib@^2.8.1: +tslib@2.8.1, tslib@^2.1.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -5657,26 +5555,6 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typeorm@^0.3.24: - version "0.3.24" - resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.3.24.tgz#e05ab51d60036d2beb35f942783c37f2af02b4ef" - integrity sha512-4IrHG7A0tY8l5gEGXfW56VOMfUVWEkWlH/h5wmcyZ+V8oCiLj7iTPp0lEjMEZVrxEkGSdP9ErgTKHKXQApl/oA== - dependencies: - "@sqltools/formatter" "^1.2.5" - ansis "^3.17.0" - app-root-path "^3.1.0" - buffer "^6.0.3" - dayjs "^1.11.13" - debug "^4.4.0" - dedent "^1.6.0" - dotenv "^16.4.7" - glob "^10.4.5" - sha.js "^2.4.11" - sql-highlight "^6.0.0" - tslib "^2.8.1" - uuid "^11.1.0" - yargs "^17.7.2" - typescript-eslint@^8.20.0: version "8.33.1" resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.33.1.tgz#d2d59c9b24afe1f903a855b02145802e4ae930ff" @@ -5746,11 +5624,6 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -uuid@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912" - integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== - v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" @@ -5917,7 +5790,7 @@ yargs-parser@21.1.1, yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^17.3.1, yargs@^17.7.2: +yargs@^17.3.1: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==