up
This commit is contained in:
@@ -0,0 +1 @@
|
||||
export class CreateRequestDto {}
|
||||
@@ -0,0 +1,4 @@
|
||||
import { PartialType } from '@nestjs/swagger';
|
||||
import { CreateRequestDto } from './create-request.dto';
|
||||
|
||||
export class UpdateRequestDto extends PartialType(CreateRequestDto) {}
|
||||
@@ -0,0 +1,28 @@
|
||||
import { Entity, ManyToOne, OptionalProps, Property } from '@mikro-orm/core';
|
||||
import { Product } from 'src/modules/product/entities/product.entity';
|
||||
import { BaseEntity } from 'src/common/entities/base.entity';
|
||||
import { Request } from './request.entity';
|
||||
import { IAttachment } from '../interface/request.interface';
|
||||
|
||||
|
||||
@Entity({ tableName: 'request_items' })
|
||||
export class RequestItem extends BaseEntity {
|
||||
[OptionalProps]?: 'createdAt' | 'deletedAt';
|
||||
|
||||
@ManyToOne(() => Product)
|
||||
product!: Product;
|
||||
|
||||
@ManyToOne(() => Request)
|
||||
request!: Request;
|
||||
|
||||
|
||||
@Property({ type: 'int' })
|
||||
quantity!: number;
|
||||
|
||||
@Property({ type: 'text', nullable: true })
|
||||
description?: string;
|
||||
|
||||
@Property({ type: 'json', nullable: true })
|
||||
attachments?: IAttachment[] // user attachments like voice and photos
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
import {
|
||||
Entity,
|
||||
Index,
|
||||
ManyToOne,
|
||||
OneToMany,
|
||||
Property,
|
||||
Collection,
|
||||
Cascade,
|
||||
Enum,
|
||||
PrimaryKey,
|
||||
OptionalProps,
|
||||
} from '@mikro-orm/core';
|
||||
import { User } from '../../user/entities/user.entity';
|
||||
import { ulid } from 'ulid';
|
||||
import { BaseEntity } from 'src/common/entities/base.entity';
|
||||
import { RequestItem } from './request-item.entity';
|
||||
import { RequestStatusEnum } from '../enum/request';
|
||||
|
||||
@Entity({ tableName: 'requests' })
|
||||
@Index({ properties: ['user'] })
|
||||
export class Request extends BaseEntity {
|
||||
[OptionalProps]?: 'createdAt' | 'deletedAt'
|
||||
|
||||
@PrimaryKey({ type: 'string', columnType: 'char(26)' })
|
||||
id: string = ulid()
|
||||
|
||||
|
||||
@ManyToOne(() => User)
|
||||
user!: User;
|
||||
|
||||
|
||||
@OneToMany(() => RequestItem, item => item.request, {
|
||||
cascade: [Cascade.ALL],
|
||||
orphanRemoval: true,
|
||||
})
|
||||
items = new Collection<RequestItem>(this);
|
||||
|
||||
|
||||
@Property({
|
||||
type: 'int',
|
||||
autoincrement: true
|
||||
})
|
||||
requestNumber: number;
|
||||
|
||||
|
||||
@Enum(() => RequestStatusEnum)
|
||||
status: RequestStatusEnum = RequestStatusEnum.PENDING;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
|
||||
export enum RequestStatusEnum{
|
||||
PENDING = 'pending',
|
||||
INVOICED = 'invoiced',
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
export interface IAttachment { type: string, url: string }
|
||||
@@ -0,0 +1,34 @@
|
||||
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
|
||||
import { RequestService } from './request.service';
|
||||
import { CreateRequestDto } from './dto/create-request.dto';
|
||||
import { UpdateRequestDto } from './dto/update-request.dto';
|
||||
|
||||
@Controller('request')
|
||||
export class RequestController {
|
||||
constructor(private readonly requestService: RequestService) {}
|
||||
|
||||
@Post()
|
||||
create(@Body() createRequestDto: CreateRequestDto) {
|
||||
return this.requestService.create(createRequestDto);
|
||||
}
|
||||
|
||||
@Get()
|
||||
findAll() {
|
||||
return this.requestService.findAll();
|
||||
}
|
||||
|
||||
@Get(':id')
|
||||
findOne(@Param('id') id: string) {
|
||||
return this.requestService.findOne(+id);
|
||||
}
|
||||
|
||||
@Patch(':id')
|
||||
update(@Param('id') id: string, @Body() updateRequestDto: UpdateRequestDto) {
|
||||
return this.requestService.update(+id, updateRequestDto);
|
||||
}
|
||||
|
||||
@Delete(':id')
|
||||
remove(@Param('id') id: string) {
|
||||
return this.requestService.remove(+id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { RequestService } from './request.service';
|
||||
import { RequestController } from './request.controller';
|
||||
|
||||
@Module({
|
||||
controllers: [RequestController],
|
||||
providers: [RequestService],
|
||||
})
|
||||
export class RequestModule {}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { CreateRequestDto } from './dto/create-request.dto';
|
||||
import { UpdateRequestDto } from './dto/update-request.dto';
|
||||
|
||||
@Injectable()
|
||||
export class RequestService {
|
||||
create(createRequestDto: CreateRequestDto) {
|
||||
return 'This action adds a new request';
|
||||
}
|
||||
|
||||
findAll() {
|
||||
return `This action returns all request`;
|
||||
}
|
||||
|
||||
findOne(id: number) {
|
||||
return `This action returns a #${id} request`;
|
||||
}
|
||||
|
||||
update(id: number, updateRequestDto: UpdateRequestDto) {
|
||||
return `This action updates a #${id} request`;
|
||||
}
|
||||
|
||||
remove(id: number) {
|
||||
return `This action removes a #${id} request`;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user