-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[init] Implement Projects microservice
- Loading branch information
1 parent
5edca9e
commit 3e261e9
Showing
15 changed files
with
200 additions
and
65 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,18 @@ | ||
import { Test, TestingModule } from '@nestjs/testing'; | ||
import { AuditorsController } from './auditors.controller'; | ||
import { AuditorsService } from './auditors.service'; | ||
import { Test, TestingModule } from '@nestjs/testing' | ||
|
||
import { AuditorsController } from '@auditors/auditors.controller' | ||
import { AuditorsService } from '@auditors/auditors.service' | ||
|
||
describe('AuditorsController', () => { | ||
let auditorsController: AuditorsController; | ||
let auditorsController: AuditorsController | ||
|
||
beforeEach(async () => { | ||
const app: TestingModule = await Test.createTestingModule({ | ||
controllers: [AuditorsController], | ||
providers: [AuditorsService], | ||
}).compile(); | ||
}).compile() | ||
|
||
auditorsController = app.get<AuditorsController>(AuditorsController); | ||
}); | ||
auditorsController = app.get<AuditorsController>(AuditorsController) | ||
}) | ||
}) | ||
|
||
describe('root', () => { | ||
it('should return "Hello World!"', () => { | ||
expect(auditorsController.getHello()).toBe('Hello World!'); | ||
}); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
FROM node:alpine As development | ||
|
||
WORKDIR /usr/src/app | ||
|
||
COPY package*.json ./ | ||
|
||
RUN npm install | ||
|
||
COPY . . | ||
|
||
RUN npm run build | ||
|
||
FROM node:alpine as production | ||
|
||
ARG NODE_ENV=production | ||
ENV NODE_ENV=${NODE_ENV} | ||
|
||
WORKDIR /usr/src/app | ||
|
||
COPY package*.json ./ | ||
|
||
RUN npm install --only=production | ||
|
||
COPY . . | ||
|
||
COPY --from=development /usr/src/app/dist ./dist | ||
|
||
CMD ["node", "dist/apps/projects/main"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
import { IsEmail, IsNotEmpty, IsString } from 'class-validator' | ||
import { ApiProperty } from '@nestjs/swagger' | ||
import { Transform } from 'class-transformer' | ||
|
||
export class CreateProject { | ||
@ApiProperty() | ||
@IsString() | ||
@IsNotEmpty() | ||
name: string | ||
|
||
@ApiProperty({ example: 'test1@example.com' }) | ||
@Transform(({ value }) => value?.toLowerCase().trim()) | ||
@IsNotEmpty() | ||
// @Validate(IsNotExist, ['Project'], { | ||
// message: 'emailAlreadyExists', | ||
// }) | ||
@IsEmail() | ||
email: string | ||
|
||
@ApiProperty({ example: 'myPass1' }) | ||
@IsNotEmpty() | ||
password: string | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,35 @@ | ||
import { NestFactory } from '@nestjs/core'; | ||
import { ProjectsModule } from './projects.module'; | ||
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger' | ||
import { ValidationPipe } from '@nestjs/common' | ||
import { ConfigService } from '@nestjs/config' | ||
import { NestFactory } from '@nestjs/core' | ||
|
||
import { RmqService } from '@app/common' | ||
import { ProjectsModule } from '@projects/projects.module' | ||
|
||
async function bootstrap() { | ||
const app = await NestFactory.create(ProjectsModule); | ||
await app.listen(3000); | ||
const app = await NestFactory.create(ProjectsModule) | ||
const configService = app.get(ConfigService) | ||
const rmqService = app.get<RmqService>(RmqService) | ||
const globalPrefix = 'api' | ||
const port = configService.get('PORT') | ||
const config = new DocumentBuilder() | ||
.setTitle('Projects') | ||
.setDescription('Projects API') | ||
.setVersion('0.1') | ||
.addTag('projects') | ||
.build() | ||
|
||
app.setGlobalPrefix(globalPrefix) | ||
app.useGlobalPipes(new ValidationPipe()) | ||
app.connectMicroservice(rmqService.getOptions('PROJECTS')) | ||
|
||
const document = SwaggerModule.createDocument(app, config) | ||
|
||
SwaggerModule.setup('api', app, document) | ||
|
||
await app.startAllMicroservices() | ||
await app.listen(port) | ||
} | ||
bootstrap(); | ||
|
||
bootstrap() | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,17 @@ | ||
import { Test, TestingModule } from '@nestjs/testing'; | ||
import { ProjectsController } from './projects.controller'; | ||
import { ProjectsService } from './projects.service'; | ||
import { Test, TestingModule } from '@nestjs/testing' | ||
import { ProjectsController } from './projects.controller' | ||
import { ProjectsService } from './projects.service' | ||
|
||
describe('ProjectsController', () => { | ||
let projectsController: ProjectsController; | ||
let projectsController: ProjectsController | ||
|
||
beforeEach(async () => { | ||
const app: TestingModule = await Test.createTestingModule({ | ||
controllers: [ProjectsController], | ||
providers: [ProjectsService], | ||
}).compile(); | ||
}).compile() | ||
|
||
projectsController = app.get<ProjectsController>(ProjectsController); | ||
}); | ||
projectsController = app.get<ProjectsController>(ProjectsController) | ||
}) | ||
}) | ||
|
||
describe('root', () => { | ||
it('should return "Hello World!"', () => { | ||
expect(projectsController.getHello()).toBe('Hello World!'); | ||
}); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,32 @@ | ||
import { Module } from '@nestjs/common'; | ||
import { ProjectsController } from './projects.controller'; | ||
import { ProjectsService } from './projects.service'; | ||
import { MongooseModule } from '@nestjs/mongoose' | ||
import { ConfigModule } from '@nestjs/config' | ||
import { Module } from '@nestjs/common' | ||
import * as Joi from 'joi' | ||
|
||
import { ProjectsService } from '@projects/projects.service' | ||
import { ProjectsController } from '@projects/projects.controller' | ||
import { ProjectsRepository } from '@projects/projects.repository' | ||
import { Project, ProjectSchema } from '@projects/schemas/project.schema' | ||
import { DatabaseModule, RmqModule } from '@app/common' | ||
|
||
@Module({ | ||
imports: [], | ||
imports: [ | ||
ConfigModule.forRoot({ | ||
isGlobal: true, | ||
validationSchema: Joi.object({ | ||
MONGODB_URI: Joi.string().required(), | ||
PORT: Joi.number().required(), | ||
RABBIT_MQ_URI: Joi.string().required(), | ||
RABBIT_MQ_PROJECTS_QUEUE: Joi.string().required(), | ||
}), | ||
envFilePath: './apps/projects/.env', | ||
}), | ||
RmqModule, | ||
DatabaseModule, | ||
MongooseModule.forFeature([{ name: Project.name, schema: ProjectSchema }]), | ||
], | ||
controllers: [ProjectsController], | ||
providers: [ProjectsService], | ||
providers: [ProjectsService, ProjectsRepository], | ||
}) | ||
export class ProjectsModule {} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
import { InjectConnection, InjectModel } from '@nestjs/mongoose' | ||
import { Injectable, Logger } from '@nestjs/common' | ||
import { Connection, Model } from 'mongoose' | ||
|
||
import { AbstractRepository } from '@app/common' | ||
|
||
import { Project } from '@projects/schemas/project.schema' | ||
|
||
@Injectable() | ||
export class ProjectsRepository extends AbstractRepository<Project> { | ||
protected readonly logger = new Logger(ProjectsRepository.name) | ||
|
||
constructor( | ||
@InjectModel(Project.name) model: Model<Project>, | ||
@InjectConnection() connection: Connection, | ||
) { | ||
super(model, connection) | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose' | ||
|
||
import { AbstractDocument } from '@app/common' | ||
|
||
@Schema({ versionKey: false }) | ||
export class Project extends AbstractDocument { | ||
@Prop({ required: true }) | ||
name: string | ||
|
||
@Prop({ required: true }) | ||
email: string | ||
|
||
@Prop({ required: true }) | ||
password: string | ||
} | ||
|
||
export const ProjectSchema = SchemaFactory.createForClass(Project) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters