Skip to content

Commit

Permalink
add CRUD cycle
Browse files Browse the repository at this point in the history
  • Loading branch information
gofogo2 committed Nov 14, 2021
1 parent 9d15acd commit 2d0bf9d
Show file tree
Hide file tree
Showing 6 changed files with 78 additions and 24 deletions.
8 changes: 0 additions & 8 deletions src/app.service.ts

This file was deleted.

9 changes: 9 additions & 0 deletions src/test/dtos/photo.dto.interface.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
export interface ICreatePhotoDto {
name: string;
description?: string;
}

export interface IOutputDto {
ok: boolean;
error?: string;
}
11 changes: 1 addition & 10 deletions src/test/entities/photo.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,6 @@ export class Photo {
@Column({ length: 500 })
name: string;

@Column()
@Column({ nullable: true })
description: string;

@Column()
filename: string;

@Column()
views: number;

@Column()
isPublished: boolean;
}
29 changes: 26 additions & 3 deletions src/test/test.controller.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,35 @@
import { Controller, Get } from '@nestjs/common';
import { Body, Controller, Delete, Get, Param, Post } from '@nestjs/common';
import { ICreatePhotoDto, IOutputDto } from './dtos/photo.dto.interface';
import { Photo } from './entities/photo.entity';
import { TestService } from './test.service';

@Controller('test')
export class TestController {
constructor(private readonly testService: TestService) {}

@Post()
async create(@Body() createPhotoDto: ICreatePhotoDto) {
const returnValue = await this.testService.create(createPhotoDto);
return returnValue;
}

@Get()
getTest(): string {
return this.testService.getTest();
getTest(): Promise<Photo[]> {
return this.testService.get();
}

@Get('/:id')
getTestOne(@Param('id') id: number): Promise<Photo> {
return this.testService.getOne(id);
}

@Get('/name/:name')
getTestOneName(@Param('name') name: string): Promise<Photo> {
return this.testService.getName(name);
}

@Delete('/:id')
delete(@Param('id') id: number): Promise<IOutputDto> {
return this.testService.delete(id);
}
}
3 changes: 2 additions & 1 deletion src/test/test.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { TestService } from './test.service';

@Module({
imports: [TypeOrmModule.forFeature([Photo])],
providers: [TestController, TestService],
providers: [TestService],
controllers: [TestController],
})
export class TestModule {}
42 changes: 40 additions & 2 deletions src/test/test.service.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { ICreatePhotoDto, IOutputDto } from './dtos/photo.dto.interface';
import { Photo } from './entities/photo.entity';

@Injectable()
Expand All @@ -9,7 +10,44 @@ export class TestService {
@InjectRepository(Photo)
private readonly repository: Repository<Photo>,
) {}
getTest(): string {
return 'test';

async create(createTodoDto: ICreatePhotoDto) {
return this.repository.save(createTodoDto);
}

get(): Promise<Photo[]> {
return this.repository.find();
}

getOne(id: number): Promise<Photo> {
return this.repository.findOne({ id });
}

async getName(name: string): Promise<Photo> {
return this.repository.findOne({ name: name });
}

async delete(id: number): Promise<IOutputDto> {
try {
console.log(id);
const result = await this.repository.findOne({ id });
console.log(result);
if (result) {
this.repository.delete({ id });
return {
ok: true,
};
} else {
return {
ok: false,
error: 'already deleted',
};
}
} catch (e) {
return {
ok: false,
error: e,
};
}
}
}

0 comments on commit 2d0bf9d

Please sign in to comment.