add database, movie examples
This commit is contained in:
parent
8d62280efb
commit
85ea5cea6a
20
compose.yml
Normal file
20
compose.yml
Normal file
@ -0,0 +1,20 @@
|
||||
services:
|
||||
postgres:
|
||||
container_name: postgres
|
||||
image: postgres:latest
|
||||
restart: always
|
||||
environment:
|
||||
- POSTGRES_USER=${POSTGRES_USER}
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
ports:
|
||||
- 5433:5432
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
networks:
|
||||
- nestjs-course
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
|
||||
networks:
|
||||
nestjs-course:
|
||||
@ -21,13 +21,17 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@nestjs/common": "^11.0.1",
|
||||
"@nestjs/config": "^4.0.2",
|
||||
"@nestjs/core": "^11.0.1",
|
||||
"@nestjs/mapped-types": "*",
|
||||
"@nestjs/platform-express": "^11.0.1",
|
||||
"@nestjs/typeorm": "^11.0.0",
|
||||
"class-transformer": "^0.5.1",
|
||||
"class-validator": "^0.14.2",
|
||||
"pg": "^8.16.0",
|
||||
"reflect-metadata": "^0.2.2",
|
||||
"rxjs": "^7.8.1"
|
||||
"rxjs": "^7.8.1",
|
||||
"typeorm": "^0.3.24"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/eslintrc": "^3.2.0",
|
||||
|
||||
13
src/actor/actor.controller.ts
Normal file
13
src/actor/actor.controller.ts
Normal file
@ -0,0 +1,13 @@
|
||||
import { Body, Controller, Post } from '@nestjs/common';
|
||||
import { ActorService } from './actor.service';
|
||||
import { CreateActorDto } from './entitites/create-actor.dto';
|
||||
|
||||
@Controller('actors')
|
||||
export class ActorController {
|
||||
constructor(private readonly actorService: ActorService) {}
|
||||
|
||||
@Post()
|
||||
create(@Body() dto: CreateActorDto) {
|
||||
return this.actorService.create(dto);
|
||||
}
|
||||
}
|
||||
13
src/actor/actor.module.ts
Normal file
13
src/actor/actor.module.ts
Normal file
@ -0,0 +1,13 @@
|
||||
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],
|
||||
})
|
||||
export class ActorModule {}
|
||||
18
src/actor/actor.service.ts
Normal file
18
src/actor/actor.service.ts
Normal file
@ -0,0 +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';
|
||||
|
||||
@Injectable()
|
||||
export class ActorService {
|
||||
constructor(
|
||||
@InjectRepository(ActorEntity)
|
||||
private readonly actorRepository: Repository<ActorEntity>,
|
||||
) {}
|
||||
|
||||
async create(dto: CreateActorDto) {
|
||||
const actor = this.actorRepository.create(dto);
|
||||
return this.actorRepository.save(actor);
|
||||
}
|
||||
}
|
||||
30
src/actor/entitites/actor.entity.ts
Normal file
30
src/actor/entitites/actor.entity.ts
Normal file
@ -0,0 +1,30 @@
|
||||
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;
|
||||
}
|
||||
8
src/actor/entitites/create-actor.dto.ts
Normal file
8
src/actor/entitites/create-actor.dto.ts
Normal file
@ -0,0 +1,8 @@
|
||||
import { IsNotEmpty, IsString, MaxLength } from 'class-validator';
|
||||
|
||||
export class CreateActorDto {
|
||||
@IsNotEmpty()
|
||||
@IsString()
|
||||
@MaxLength(64)
|
||||
name: string;
|
||||
}
|
||||
@ -1,8 +1,27 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { ConfigModule, ConfigService } from '@nestjs/config';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { getTypeOrmConfig } from './config/typeorm.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';
|
||||
|
||||
@Module({
|
||||
imports: [TaskModule],
|
||||
imports: [
|
||||
ConfigModule.forRoot({
|
||||
isGlobal: true,
|
||||
}),
|
||||
TypeOrmModule.forRootAsync({
|
||||
imports: [ConfigModule],
|
||||
useFactory: getTypeOrmConfig,
|
||||
inject: [ConfigService],
|
||||
}),
|
||||
TaskModule,
|
||||
MovieModule,
|
||||
ReviewModule,
|
||||
ActorModule,
|
||||
],
|
||||
controllers: [],
|
||||
providers: [],
|
||||
})
|
||||
|
||||
17
src/config/typeorm.config.ts
Normal file
17
src/config/typeorm.config.ts
Normal file
@ -0,0 +1,17 @@
|
||||
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,
|
||||
};
|
||||
}
|
||||
30
src/movie/dto/movie.dto.ts
Normal file
30
src/movie/dto/movie.dto.ts
Normal file
@ -0,0 +1,30 @@
|
||||
import {
|
||||
IsArray,
|
||||
IsInt,
|
||||
IsNotEmpty,
|
||||
IsString,
|
||||
IsUrl,
|
||||
IsUUID,
|
||||
Max,
|
||||
Min,
|
||||
} from 'class-validator';
|
||||
import { ActorEntity } from '../../actor/entitites/actor.entity';
|
||||
|
||||
export class MovieDto {
|
||||
@IsNotEmpty()
|
||||
@IsString()
|
||||
title: string;
|
||||
|
||||
@IsNotEmpty()
|
||||
@IsInt()
|
||||
@Min(1888)
|
||||
@Max(new Date().getFullYear())
|
||||
releaseYear: number;
|
||||
|
||||
@IsArray()
|
||||
@IsUUID('4', { each: true })
|
||||
actorIds: ActorEntity['id'][];
|
||||
|
||||
@IsUrl()
|
||||
imageUrl: string;
|
||||
}
|
||||
112
src/movie/entities/movie.entity.ts
Normal file
112
src/movie/entities/movie.entity.ts
Normal file
@ -0,0 +1,112 @@
|
||||
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;
|
||||
}
|
||||
26
src/movie/entities/poster.entity.ts
Normal file
26
src/movie/entities/poster.entity.ts
Normal file
@ -0,0 +1,26 @@
|
||||
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;
|
||||
}
|
||||
42
src/movie/movie.controller.ts
Normal file
42
src/movie/movie.controller.ts
Normal file
@ -0,0 +1,42 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
Delete,
|
||||
Get,
|
||||
Param,
|
||||
Post,
|
||||
Put,
|
||||
} from '@nestjs/common';
|
||||
import { MovieDto } from './dto/movie.dto';
|
||||
import { MovieEntity } from './entities/movie.entity';
|
||||
import { MovieService } from './movie.service';
|
||||
|
||||
@Controller('movies')
|
||||
export class MovieController {
|
||||
constructor(private readonly movieService: MovieService) {}
|
||||
|
||||
@Get()
|
||||
public findAll() {
|
||||
return this.movieService.findAll();
|
||||
}
|
||||
|
||||
@Get(':id')
|
||||
public findById(@Param('id') id: MovieEntity['id']) {
|
||||
return this.movieService.findById(id);
|
||||
}
|
||||
|
||||
@Post()
|
||||
public create(@Body() dto: MovieDto) {
|
||||
return this.movieService.create(dto);
|
||||
}
|
||||
|
||||
@Put(':id')
|
||||
public update(@Body() dto: MovieDto, @Param('id') id: MovieEntity['id']) {
|
||||
return this.movieService.update(id, dto);
|
||||
}
|
||||
|
||||
@Delete(':id')
|
||||
public delete(@Param('id') id: MovieEntity['id']) {
|
||||
return this.movieService.delete(id);
|
||||
}
|
||||
}
|
||||
16
src/movie/movie.module.ts
Normal file
16
src/movie/movie.module.ts
Normal file
@ -0,0 +1,16 @@
|
||||
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],
|
||||
})
|
||||
export class MovieModule {}
|
||||
80
src/movie/movie.service.ts
Normal file
80
src/movie/movie.service.ts
Normal file
@ -0,0 +1,80 @@
|
||||
import { Injectable, NotFoundException } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { In, Repository } from 'typeorm';
|
||||
import { ActorEntity } from '../actor/entitites/actor.entity';
|
||||
import { MovieDto } from './dto/movie.dto';
|
||||
import { MovieEntity } from './entities/movie.entity';
|
||||
import { MoviePosterEntity } from './entities/poster.entity';
|
||||
|
||||
@Injectable()
|
||||
export class MovieService {
|
||||
constructor(
|
||||
@InjectRepository(MovieEntity)
|
||||
private readonly movieRepository: Repository<MovieEntity>,
|
||||
|
||||
@InjectRepository(ActorEntity)
|
||||
private readonly actorRepository: Repository<ActorEntity>,
|
||||
|
||||
@InjectRepository(MoviePosterEntity)
|
||||
private readonly moviePosterRepository: Repository<MoviePosterEntity>,
|
||||
) {}
|
||||
|
||||
async findAll(): Promise<MovieEntity[]> {
|
||||
return await this.movieRepository.find({
|
||||
order: {
|
||||
id: 'ASC',
|
||||
},
|
||||
relations: ['actors'],
|
||||
});
|
||||
}
|
||||
|
||||
async findById(id: MovieEntity['id']): Promise<MovieEntity> {
|
||||
const movie = await this.movieRepository.findOne({
|
||||
where: { id },
|
||||
relations: ['actors'],
|
||||
});
|
||||
if (!movie) {
|
||||
throw new NotFoundException(`Not found movie with id ${id}`);
|
||||
}
|
||||
|
||||
return movie;
|
||||
}
|
||||
|
||||
async create(dto: MovieDto) {
|
||||
const { actorIds, releaseYear, title, imageUrl } = dto;
|
||||
const actors = await this.actorRepository.find({
|
||||
where: {
|
||||
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.movieRepository.save(movie);
|
||||
}
|
||||
|
||||
async update(id: MovieEntity['id'], dto: MovieDto): Promise<boolean> {
|
||||
const movie = await this.findById(id);
|
||||
Object.assign(movie, dto);
|
||||
await this.movieRepository.save(movie);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
async delete(id: MovieEntity['id']): Promise<MovieEntity> {
|
||||
const movie = await this.findById(id);
|
||||
await this.movieRepository.remove(movie);
|
||||
|
||||
return movie;
|
||||
}
|
||||
}
|
||||
17
src/review/dto/create-review.dto.ts
Normal file
17
src/review/dto/create-review.dto.ts
Normal file
@ -0,0 +1,17 @@
|
||||
import { IsNotEmpty, IsString, IsUUID, Max, Min } from 'class-validator';
|
||||
import { ReviewEntity } from '../entities/review.entity';
|
||||
|
||||
export class CreateReviewDto {
|
||||
@IsNotEmpty()
|
||||
@IsString()
|
||||
text: ReviewEntity['text'];
|
||||
|
||||
@IsNotEmpty()
|
||||
@Min(0)
|
||||
@Max(10)
|
||||
rating: ReviewEntity['rating'];
|
||||
|
||||
@IsNotEmpty()
|
||||
@IsUUID()
|
||||
movieId: ReviewEntity['movieId'];
|
||||
}
|
||||
52
src/review/entities/review.entity.ts
Normal file
52
src/review/entities/review.entity.ts
Normal file
@ -0,0 +1,52 @@
|
||||
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;
|
||||
}
|
||||
18
src/review/review.controller.ts
Normal file
18
src/review/review.controller.ts
Normal file
@ -0,0 +1,18 @@
|
||||
import { Body, Controller, Get, Post } from '@nestjs/common';
|
||||
import { CreateReviewDto } from './dto/create-review.dto';
|
||||
import { ReviewService } from './review.service';
|
||||
|
||||
@Controller('reviews')
|
||||
export class ReviewController {
|
||||
constructor(private readonly reviewService: ReviewService) {}
|
||||
|
||||
@Post()
|
||||
public async create(@Body() dto: CreateReviewDto) {
|
||||
return this.reviewService.create(dto);
|
||||
}
|
||||
|
||||
@Get()
|
||||
public findAll() {
|
||||
return this.reviewService.findAll();
|
||||
}
|
||||
}
|
||||
23
src/review/review.module.ts
Normal file
23
src/review/review.module.ts
Normal file
@ -0,0 +1,23 @@
|
||||
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],
|
||||
})
|
||||
export class ReviewModule {}
|
||||
33
src/review/review.service.ts
Normal file
33
src/review/review.service.ts
Normal file
@ -0,0 +1,33 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { MovieService } from '../movie/movie.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<ReviewEntity>,
|
||||
|
||||
private readonly movieService: MovieService,
|
||||
) {}
|
||||
|
||||
async findAll(): Promise<ReviewEntity[]> {
|
||||
return this.reviewRepository.find({});
|
||||
}
|
||||
|
||||
async create(dto: CreateReviewDto): Promise<ReviewEntity> {
|
||||
const { movieId, rating, text } = dto;
|
||||
const movie = await this.movieService.findById(movieId);
|
||||
|
||||
const review = this.reviewRepository.create({
|
||||
text,
|
||||
rating,
|
||||
movie,
|
||||
movieId,
|
||||
});
|
||||
return await this.reviewRepository.save(review);
|
||||
}
|
||||
}
|
||||
230
yarn.lock
230
yarn.lock
@ -996,6 +996,15 @@
|
||||
load-esm "1.0.2"
|
||||
tslib "2.8.1"
|
||||
|
||||
"@nestjs/config@^4.0.2":
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@nestjs/config/-/config-4.0.2.tgz#a2777a1fd2d0d594bab3953f50fbca95c14cce52"
|
||||
integrity sha512-McMW6EXtpc8+CwTUwFdg6h7dYcBUpH5iUILCclAsa+MbCEvC9ZKu4dCHRlJqALuhjLw97pbQu62l4+wRwGeZqA==
|
||||
dependencies:
|
||||
dotenv "16.4.7"
|
||||
dotenv-expand "12.0.1"
|
||||
lodash "4.17.21"
|
||||
|
||||
"@nestjs/core@^11.0.1":
|
||||
version "11.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@nestjs/core/-/core-11.1.2.tgz#df169edec5b0b93b4001d5c603a2e18dcb4c514e"
|
||||
@ -1042,6 +1051,11 @@
|
||||
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"
|
||||
@ -1082,6 +1096,11 @@
|
||||
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"
|
||||
@ -1116,6 +1135,11 @@
|
||||
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"
|
||||
@ -1915,7 +1939,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==
|
||||
@ -1928,6 +1952,11 @@ 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"
|
||||
@ -2163,6 +2192,14 @@ 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"
|
||||
@ -2497,6 +2534,11 @@ 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"
|
||||
@ -2511,7 +2553,7 @@ decompress-response@^6.0.0:
|
||||
dependencies:
|
||||
mimic-response "^3.1.0"
|
||||
|
||||
dedent@^1.0.0:
|
||||
dedent@^1.0.0, dedent@^1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.6.0.tgz#79d52d6389b1ffa67d2bcef59ba51847a9d503b2"
|
||||
integrity sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==
|
||||
@ -2576,6 +2618,23 @@ diff@^4.0.1:
|
||||
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
|
||||
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
|
||||
|
||||
dotenv-expand@12.0.1:
|
||||
version "12.0.1"
|
||||
resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-12.0.1.tgz#44bdfa204a368100689ec35d7385755f599ceeb1"
|
||||
integrity sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==
|
||||
dependencies:
|
||||
dotenv "^16.4.5"
|
||||
|
||||
dotenv@16.4.7:
|
||||
version "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:
|
||||
version "16.5.0"
|
||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.5.0.tgz#092b49f25f808f020050051d1ff258e404c78692"
|
||||
integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==
|
||||
|
||||
dunder-proto@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a"
|
||||
@ -3253,6 +3312,18 @@ 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"
|
||||
@ -3433,7 +3504,7 @@ inflight@^1.0.4:
|
||||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
|
||||
inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
|
||||
inherits@2, inherits@2.0.4, inherits@^2.0.1, 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==
|
||||
@ -3587,6 +3658,15 @@ 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"
|
||||
@ -4114,7 +4194,7 @@ lodash.merge@^4.6.2:
|
||||
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
|
||||
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
|
||||
|
||||
lodash@^4.17.21:
|
||||
lodash@4.17.21, lodash@^4.17.21:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
@ -4132,6 +4212,11 @@ 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"
|
||||
@ -4297,7 +4382,7 @@ minimist@^1.2.6:
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
|
||||
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
|
||||
|
||||
minipass@^7.1.2:
|
||||
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
|
||||
version "7.1.2"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
|
||||
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
|
||||
@ -4534,6 +4619,14 @@ 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"
|
||||
@ -4567,6 +4660,62 @@ 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"
|
||||
@ -4606,6 +4755,28 @@ 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"
|
||||
@ -4842,7 +5013,7 @@ rxjs@^7.8.1:
|
||||
dependencies:
|
||||
tslib "^2.1.0"
|
||||
|
||||
safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
|
||||
safe-buffer@5.2.1, safe-buffer@^5.0.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==
|
||||
@ -4944,6 +5115,14 @@ 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"
|
||||
@ -5056,11 +5235,21 @@ 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"
|
||||
@ -5419,7 +5608,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.1.0, tslib@^2.8.1:
|
||||
version "2.8.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
|
||||
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
|
||||
@ -5468,6 +5657,26 @@ 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"
|
||||
@ -5537,6 +5746,11 @@ 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"
|
||||
@ -5703,7 +5917,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.3.1, yargs@^17.7.2:
|
||||
version "17.7.2"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
|
||||
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user