Commit b556ca5d authored by mxm-web-develop's avatar mxm-web-develop

service

parents
# Environment variables declared in this file are automatically made available to Prisma.
# See the documentation for more detail: https://pris.ly/d/prisma-schema#accessing-environment-variables-from-the-schema
# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB.
# See the documentation for all the connection string options: https://pris.ly/d/connection-strings
DATABASE_URL="file:./dev.db"
\ No newline at end of file
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
project: 'tsconfig.json',
tsconfigRootDir : __dirname,
sourceType: 'module',
},
plugins: ['@typescript-eslint/eslint-plugin'],
extends: [
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
],
root: true,
env: {
node: true,
jest: true,
},
ignorePatterns: ['.eslintrc.js'],
rules: {
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
},
};
node_modules
{
"singleQuote": true,
"trailingComma": "all"
}
\ No newline at end of file
<p align="center">
<a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo-small.svg" width="200" alt="Nest Logo" /></a>
</p>
[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456
[circleci-url]: https://circleci.com/gh/nestjs/nest
<p align="center">A progressive <a href="http://nodejs.org" target="_blank">Node.js</a> framework for building efficient and scalable server-side applications.</p>
<p align="center">
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/v/@nestjs/core.svg" alt="NPM Version" /></a>
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/l/@nestjs/core.svg" alt="Package License" /></a>
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/common.svg" alt="NPM Downloads" /></a>
<a href="https://circleci.com/gh/nestjs/nest" target="_blank"><img src="https://img.shields.io/circleci/build/github/nestjs/nest/master" alt="CircleCI" /></a>
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#9" alt="Coverage" /></a>
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
<a href="https://paypal.me/kamilmysliwiec" target="_blank"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg"/></a>
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://img.shields.io/badge/Support%20us-Open%20Collective-41B883.svg" alt="Support us"></a>
<a href="https://twitter.com/nestframework" target="_blank"><img src="https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow"></a>
</p>
<!--[![Backers on Open Collective](https://opencollective.com/nest/backers/badge.svg)](https://opencollective.com/nest#backer)
[![Sponsors on Open Collective](https://opencollective.com/nest/sponsors/badge.svg)](https://opencollective.com/nest#sponsor)-->
## Description
[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository.
## Installation
```bash
$ npm install
```
## Running the app
```bash
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod
```
## Test
```bash
# unit tests
$ npm run test
# e2e tests
$ npm run test:e2e
# test coverage
$ npm run test:cov
```
## Support
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
## Stay in touch
- Author - [Kamil Myśliwiec](https://kamilmysliwiec.com)
- Website - [https://nestjs.com](https://nestjs.com/)
- Twitter - [@nestframework](https://twitter.com/nestframework)
## License
Nest is [MIT licensed](LICENSE).
{
"$schema": "https://json.schemastore.org/nest-cli",
"collection": "@nestjs/schematics",
"sourceRoot": "src"
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"name": "fzm_server",
"version": "0.0.1",
"description": "",
"author": "",
"private": true,
"license": "UNLICENSED",
"scripts": {
"prebuild": "rimraf dist",
"build": "nest build",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "nest start",
"start:dev": "nest start --watch",
"start:debug": "nest start --debug --watch",
"db:ui":"npx prisma studio",
"start:prod": "node dist/main",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "jest",
"test:watch": "jest --watch",
"test:cov": "jest --coverage",
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
"test:e2e": "jest --config ./test/jest-e2e.json"
},
"dependencies": {
"@nestjs/common": "^8.0.0",
"@nestjs/core": "^8.0.0",
"@nestjs/mapped-types": "*",
"@nestjs/platform-express": "^8.0.0",
"@nestjs/serve-static": "^2.2.2",
"@nestjs/swagger": "^5.2.1",
"@prisma/client": "^3.15.2",
"class-transformer": "^0.5.1",
"class-validator": "^0.13.2",
"reflect-metadata": "^0.1.13",
"rimraf": "^3.0.2",
"rxjs": "^7.2.0",
"swagger-ui-express": "^4.4.0"
},
"devDependencies": {
"@nestjs/cli": "^8.0.0",
"@nestjs/schematics": "^8.0.0",
"@nestjs/testing": "^8.0.0",
"@types/express": "^4.17.13",
"@types/jest": "27.4.1",
"@types/node": "^16.0.0",
"@types/supertest": "^2.0.11",
"@typescript-eslint/eslint-plugin": "^5.0.0",
"@typescript-eslint/parser": "^5.0.0",
"eslint": "^8.0.1",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^4.0.0",
"jest": "^27.2.5",
"prettier": "^2.3.2",
"prisma": "^3.15.2",
"source-map-support": "^0.5.20",
"supertest": "^6.1.3",
"ts-jest": "^27.0.3",
"ts-loader": "^9.2.3",
"ts-node": "^10.0.0",
"tsconfig-paths": "^3.10.1",
"typescript": "^4.3.5"
},
"jest": {
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": "src",
"testRegex": ".*\\.spec\\.ts$",
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
},
"collectCoverageFrom": [
"**/*.(t|j)s"
],
"coverageDirectory": "../coverage",
"testEnvironment": "node"
}
}
File added
-- CreateTable
CREATE TABLE "User" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"email" TEXT NOT NULL,
"name" TEXT
);
-- CreateTable
CREATE TABLE "Post" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"title" TEXT NOT NULL,
"content" TEXT,
"published" BOOLEAN DEFAULT false,
"authorId" INTEGER,
CONSTRAINT "Post_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User" ("id") ON DELETE SET NULL ON UPDATE CASCADE
);
-- CreateIndex
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
/*
Warnings:
- You are about to drop the `Post` table. If the table is not empty, all the data it contains will be lost.
- You are about to drop the `User` table. If the table is not empty, all the data it contains will be lost.
*/
-- DropTable
PRAGMA foreign_keys=off;
DROP TABLE "Post";
PRAGMA foreign_keys=on;
-- DropTable
PRAGMA foreign_keys=off;
DROP TABLE "User";
PRAGMA foreign_keys=on;
-- CreateTable
CREATE TABLE "ProductInfo" (
"id" TEXT NOT NULL PRIMARY KEY,
"module" TEXT NOT NULL DEFAULT '',
"service" TEXT NOT NULL DEFAULT '',
"function" TEXT NOT NULL,
"dev" BOOLEAN NOT NULL DEFAULT true,
"test" BOOLEAN NOT NULL DEFAULT true
);
-- CreateTable
CREATE TABLE "Jobs" (
"id" TEXT NOT NULL PRIMARY KEY,
"title" TEXT NOT NULL,
"requirments" TEXT NOT NULL,
"demands" TEXT NOT NULL,
"department" TEXT NOT NULL,
"location" TEXT NOT NULL
);
-- CreateTable
CREATE TABLE "Partners" (
"id" TEXT NOT NULL PRIMARY KEY,
"name" TEXT NOT NULL,
"link" TEXT NOT NULL
);
-- CreateTable
CREATE TABLE "Events" (
"id" TEXT NOT NULL PRIMARY KEY,
"date" DATETIME NOT NULL,
"title" TEXT NOT NULL,
"details" TEXT NOT NULL DEFAULT ''
);
-- CreateTable
CREATE TABLE "Class" (
"id" TEXT NOT NULL PRIMARY KEY,
"charpter" TEXT NOT NULL,
"className" TEXT NOT NULL,
"link" TEXT NOT NULL,
"number" INTEGER NOT NULL,
"classId" TEXT NOT NULL,
CONSTRAINT "Class_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Classes" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
);
-- CreateTable
CREATE TABLE "Classes" (
"id" TEXT NOT NULL PRIMARY KEY
);
/*
Warnings:
- Added the required column `productsId` to the `ProductInfo` table without a default value. This is not possible if the table is not empty.
*/
-- CreateTable
CREATE TABLE "Feature" (
"id" TEXT NOT NULL PRIMARY KEY,
"title" TEXT NOT NULL,
"description" TEXT NOT NULL,
"productsId" INTEGER NOT NULL,
CONSTRAINT "Feature_productsId_fkey" FOREIGN KEY ("productsId") REFERENCES "Products" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
);
-- CreateTable
CREATE TABLE "Products" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"name" TEXT NOT NULL
);
-- RedefineTables
PRAGMA foreign_keys=OFF;
CREATE TABLE "new_ProductInfo" (
"id" TEXT NOT NULL PRIMARY KEY,
"module" TEXT NOT NULL DEFAULT '',
"service" TEXT NOT NULL DEFAULT '',
"function" TEXT NOT NULL,
"productsId" INTEGER NOT NULL,
"dev" BOOLEAN NOT NULL DEFAULT true,
"test" BOOLEAN NOT NULL DEFAULT true,
CONSTRAINT "ProductInfo_productsId_fkey" FOREIGN KEY ("productsId") REFERENCES "Products" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
);
INSERT INTO "new_ProductInfo" ("dev", "function", "id", "module", "service", "test") SELECT "dev", "function", "id", "module", "service", "test" FROM "ProductInfo";
DROP TABLE "ProductInfo";
ALTER TABLE "new_ProductInfo" RENAME TO "ProductInfo";
PRAGMA foreign_key_check;
PRAGMA foreign_keys=ON;
-- RedefineTables
PRAGMA foreign_keys=OFF;
CREATE TABLE "new_Events" (
"id" TEXT NOT NULL PRIMARY KEY,
"date" TEXT NOT NULL,
"title" TEXT NOT NULL,
"details" TEXT NOT NULL DEFAULT ''
);
INSERT INTO "new_Events" ("date", "details", "id", "title") SELECT "date", "details", "id", "title" FROM "Events";
DROP TABLE "Events";
ALTER TABLE "new_Events" RENAME TO "Events";
PRAGMA foreign_key_check;
PRAGMA foreign_keys=ON;
/*
Warnings:
- Added the required column `diploma` to the `Jobs` table without a default value. This is not possible if the table is not empty.
*/
-- RedefineTables
PRAGMA foreign_keys=OFF;
CREATE TABLE "new_Jobs" (
"id" TEXT NOT NULL PRIMARY KEY,
"title" TEXT NOT NULL,
"diploma" TEXT NOT NULL,
"requirments" TEXT NOT NULL,
"demands" TEXT NOT NULL,
"department" TEXT NOT NULL,
"location" TEXT NOT NULL
);
INSERT INTO "new_Jobs" ("demands", "department", "id", "location", "requirments", "title") SELECT "demands", "department", "id", "location", "requirments", "title" FROM "Jobs";
DROP TABLE "Jobs";
ALTER TABLE "new_Jobs" RENAME TO "Jobs";
PRAGMA foreign_key_check;
PRAGMA foreign_keys=ON;
-- RedefineTables
PRAGMA foreign_keys=OFF;
CREATE TABLE "new_Jobs" (
"id" TEXT NOT NULL PRIMARY KEY,
"title" TEXT NOT NULL,
"diploma" TEXT NOT NULL DEFAULT '',
"salary" TEXT NOT NULL DEFAULT '5000-8000',
"requirments" TEXT NOT NULL DEFAULT '无',
"demands" TEXT NOT NULL DEFAULT '无',
"department" TEXT NOT NULL DEFAULT '',
"location" TEXT NOT NULL DEFAULT '杭州西湖区'
);
INSERT INTO "new_Jobs" ("demands", "department", "diploma", "id", "location", "requirments", "title") SELECT "demands", "department", "diploma", "id", "location", "requirments", "title" FROM "Jobs";
DROP TABLE "Jobs";
ALTER TABLE "new_Jobs" RENAME TO "Jobs";
PRAGMA foreign_key_check;
PRAGMA foreign_keys=ON;
/*
Warnings:
- You are about to drop the `Partners` table. If the table is not empty, all the data it contains will be lost.
*/
-- DropTable
PRAGMA foreign_keys=off;
DROP TABLE "Partners";
PRAGMA foreign_keys=on;
# Please do not edit this file manually
# It should be added in your version-control system (i.e. Git)
provider = "sqlite"
\ No newline at end of file
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
previewFeatures = ["orderByRelation"]
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
model ProductInfo{
id String @default(uuid()) @id
module String @default("")
service String @default("")
function String
products Products @relation(fields:[productsId],references:[id])
productsId Int
dev Boolean @default(true)
test Boolean @default(true)
}
model Feature{
id String @default(uuid()) @id
title String
description String
products Products @relation(fields:[productsId],references:[id])
productsId Int
}
model Products{
id Int @default(autoincrement()) @id
name String
products ProductInfo[]
features Feature[]
}
// model Photo{
// id String @default(uuid()) @id
// name String @unique
// png Boolean @default(true)
// svg Boolean? @default(false)
// jpg Boolean? @default(false)
// prefix String
// }
model Jobs{
id String @default(uuid()) @id
title String
diploma String @default("")
salary String @default("5000-8000")
requirments String @default("无")
demands String @default("无")
department String @default("")
location String @default("杭州西湖区")
}
// model Partners{
// id String @default(uuid()) @id
// name_cn String
// name_en String?
// }
model Events{
id String @default(uuid()) @id
date String
title String
details String @default("")
}
model Class{
id String @default(uuid()) @id
charpter String
className String
link String
number Int
course Classes @relation(fields: [classId], references:[id])
classId String
}
model Classes{
id String @default(uuid()) @id
class Class[]
}
\ No newline at end of file
node_modules
# Keep environment variables out of version control
.env
import { Module } from '@nestjs/common';
import { PrismaService } from './prisma/prisma.service';
import { JobsModule } from './jobs/jobs.module';
import { ProductsModule } from './products/products.module';
import { PartnersModule } from './partners/partners.module';
import { EventsModule } from './events/events.module';
import { ClassesModule } from './classes/classes.module';
import { ServeStaticModule } from '@nestjs/serve-static';
import { join } from 'path';
import { NewsModule } from './news/news.module';
@Module({
imports: [
ServeStaticModule.forRoot({
rootPath:join(__dirname,'..','static')
}),
JobsModule,
ProductsModule,
EventsModule,
NewsModule,
],
providers: [],
})
export class AppModule {}
import { Test, TestingModule } from '@nestjs/testing';
import { ClassesController } from './classes.controller';
import { ClassesService } from './classes.service';
describe('ClassesController', () => {
let controller: ClassesController;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [ClassesController],
providers: [ClassesService],
}).compile();
controller = module.get<ClassesController>(ClassesController);
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
});
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
import { ClassesService } from './classes.service';
import { CreateClassDto } from './dto/create-class.dto';
import { UpdateClassDto } from './dto/update-class.dto';
@Controller('classes')
export class ClassesController {
constructor(private readonly classesService: ClassesService) {}
@Post()
create(@Body() createClassDto: CreateClassDto) {
return this.classesService.create(createClassDto);
}
@Get()
findAll() {
return this.classesService.findAll();
}
@Get(':id')
findOne(@Param('id') id: string) {
return this.classesService.findOne(+id);
}
@Patch(':id')
update(@Param('id') id: string, @Body() updateClassDto: UpdateClassDto) {
return this.classesService.update(+id, updateClassDto);
}
@Delete(':id')
remove(@Param('id') id: string) {
return this.classesService.remove(+id);
}
}
import { Module } from '@nestjs/common';
import { ClassesService } from './classes.service';
import { ClassesController } from './classes.controller';
@Module({
controllers: [ClassesController],
providers: [ClassesService]
})
export class ClassesModule {}
import { Test, TestingModule } from '@nestjs/testing';
import { ClassesService } from './classes.service';
describe('ClassesService', () => {
let service: ClassesService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [ClassesService],
}).compile();
service = module.get<ClassesService>(ClassesService);
});
it('should be defined', () => {
expect(service).toBeDefined();
});
});
import { Injectable } from '@nestjs/common';
import { CreateClassDto } from './dto/create-class.dto';
import { UpdateClassDto } from './dto/update-class.dto';
@Injectable()
export class ClassesService {
create(createClassDto: CreateClassDto) {
return 'This action adds a new class';
}
findAll() {
return `This action returns all classes`;
}
findOne(id: number) {
return `This action returns a #${id} class`;
}
update(id: number, updateClassDto: UpdateClassDto) {
return `This action updates a #${id} class`;
}
remove(id: number) {
return `This action removes a #${id} class`;
}
}
export class CreateClassDto {}
import { PartialType } from '@nestjs/mapped-types';
import { CreateClassDto } from './create-class.dto';
export class UpdateClassDto extends PartialType(CreateClassDto) {}
import { ApiProperty } from "@nestjs/swagger"
import { IsDate, IsDateString, Length } from "class-validator"
export class CreateEventDto {
@IsDateString({
format: "YYYY-MM-DD"
})
@ApiProperty({
type:String,
example:'2020-07-19'
})
date: string
@Length(2,250)
@ApiProperty({
type:String,
description:'33复杂美成立量化交易及交易所',
example:'33复杂美成立量化交易及交易所'
})
title: string
}
import { PartialType } from '@nestjs/mapped-types';
import { CreateEventDto } from './create-event.dto';
export class UpdateEventDto extends PartialType(CreateEventDto) {}
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
import { EventsService } from './events.service';
import { CreateEventDto } from './dto/create-event.dto';
import { UpdateEventDto } from './dto/update-event.dto';
import { ApiTags } from '@nestjs/swagger';
@ApiTags('Events')
@Controller('events')
export class EventsController {
constructor(private readonly eventsService: EventsService) {}
@Post()
create(@Body() createEventDto: CreateEventDto) {
return this.eventsService.create(createEventDto);
}
@Get()
findAll() {
return this.eventsService.findAll();
}
@Patch(':id')
update(@Param('id') id: string, @Body() updateEventDto: UpdateEventDto) {
return this.eventsService.update(id, updateEventDto);
}
@Delete(':id')
remove(@Param('id') id: string) {
return this.eventsService.remove(id);
}
}
import { Module } from '@nestjs/common';
import { EventsService } from './events.service';
import { EventsController } from './events.controller';
import { PrismaService } from 'src/prisma/prisma.service';
@Module({
controllers: [EventsController],
providers: [EventsService,PrismaService]
})
export class EventsModule {}
import { Injectable } from '@nestjs/common';
import { PrismaService } from 'src/prisma/prisma.service';
import { CreateEventDto } from './dto/create-event.dto';
import { UpdateEventDto } from './dto/update-event.dto';
@Injectable()
export class EventsService {
constructor(private prisma:PrismaService){}
create(data: CreateEventDto) {
return this.prisma.events.create({
data
})
}
findAll() {
return this.prisma.events.findMany()
}
update(id: string, updateEventDto: UpdateEventDto) {
return this.prisma.events.update({
where:{id: id},
data:updateEventDto
})
}
remove(id: string) {
return this.prisma.events.delete({
where:{id:id}
})
}
}
import { ApiProperty } from "@nestjs/swagger"
import { IsString, Length } from "class-validator"
export class CreateJobDto {
@IsString()
@ApiProperty({
type:String,
example:'资深前端工程师'
})
title:string
@IsString()
@ApiProperty({
type:String,
example:' 对已有Vue框架项目进行需求的开发和维护;对移动端H5页面有一定开发经验,能够独立解决兼容问题,接口问题及其他常见的问题;对照设计给出的原型进行高度还原的开发'
})
requirments:string
@IsString()
@ApiProperty({
type:String,
example:' 三年以上前端开发经验;Node.js的使用经验,Js,Ts的使用经验;熟悉并理解vue,react的运行'
})
demands:string
@IsString()
@ApiProperty({
type:String,
example:'3000-13000'
})
salary?:string
@IsString()
@ApiProperty({
type:String,
example:'研究生'
})
diploma?:string
@IsString()
@Length(1,10)
@ApiProperty({
type:String,
example:'技术部门'
})
department:string
@IsString()
@ApiProperty({
type:String,
example:'杭州市西湖区'
})
location:string
}
export interface FindType{
department:string
}
\ No newline at end of file
import { PartialType } from '@nestjs/mapped-types';
import { CreateJobDto } from './create-job.dto';
export class UpdateJobDto extends PartialType(CreateJobDto) {}
import { Controller, Get, Post, Body, Patch, Param, Delete, Query } from '@nestjs/common';
import { JobsService } from './jobs.service';
import { CreateJobDto, FindType } from './dto/create-job.dto';
import { UpdateJobDto } from './dto/update-job.dto';
import { ApiTags } from '@nestjs/swagger';
@ApiTags('Jobs')
@Controller('jobs')
export class JobsController {
constructor(private readonly jobsService: JobsService) {}
@Post()
create(@Body() createJobDto: CreateJobDto) {
return this.jobsService.create(createJobDto);
}
@Get()
findAll(@Query() query: FindType) {
return this.jobsService.findAll(query);
}
@Get(':id')
findOne(@Param('id') id: string) {
return this.jobsService.findOne(id);
}
@Patch(':id')
update(@Param('id') id: string, @Body() updateJobDto: UpdateJobDto) {
return this.jobsService.update(+id, updateJobDto);
}
@Delete(':id')
remove(@Param('id') id: string) {
return this.jobsService.remove(+id);
}
}
import { Module } from '@nestjs/common';
import { JobsService } from './jobs.service';
import { JobsController } from './jobs.controller';
import { PrismaService } from 'src/prisma/prisma.service';
@Module({
controllers: [JobsController],
providers: [JobsService,PrismaService]
})
export class JobsModule {}
import { Injectable } from '@nestjs/common';
import { PrismaService } from '../prisma/prisma.service';
import { CreateJobDto, FindType } from './dto/create-job.dto';
import { UpdateJobDto } from './dto/update-job.dto';
@Injectable()
export class JobsService {
constructor(private prisma:PrismaService){}
create(createJobDto: CreateJobDto) {
return this.prisma.jobs.create({
data:createJobDto
})
}
findAll(query:FindType) {
console.log(query.department);
if(query.department){
return this.prisma.jobs.findMany({
where:{
department:query.department
}
})
}else{
return this.prisma.jobs.findMany()
}
}
findOne(id: string) {
return this.prisma.jobs.findUnique({
where:{id}
})
}
update(id: number, updateJobDto: UpdateJobDto) {
return `This action updates a #${id} job`;
}
remove(id: number) {
return `This action removes a #${id} job`;
}
}
import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe());
app.enableCors({
origin:true,
methods:'GET,HEAD,PUT,PATCH,POST,DELETE,OPTIONS'
})
const swaggerconfig = new DocumentBuilder()
.setTitle('fzm web service')
.setDescription('复杂美公司内部网络服务')
.setVersion('1.0')
.addTag('Products')
.addTag('Jobs')
.addTag('Partners')
.addTag('Classes')
.addTag('Events')
.build();
const document = SwaggerModule.createDocument(app, swaggerconfig);
SwaggerModule.setup('api', app, document);
await app.listen(3333);
}
bootstrap();
export class CreateNewsDto {}
import { PartialType } from '@nestjs/mapped-types';
import { CreateNewsDto } from './create-news.dto';
export class UpdateNewsDto extends PartialType(CreateNewsDto) {}
import { Test, TestingModule } from '@nestjs/testing';
import { NewsController } from './news.controller';
import { NewsService } from './news.service';
describe('NewsController', () => {
let controller: NewsController;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [NewsController],
providers: [NewsService],
}).compile();
controller = module.get<NewsController>(NewsController);
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
});
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
import { NewsService } from './news.service';
import { CreateNewsDto } from './dto/create-news.dto';
import { UpdateNewsDto } from './dto/update-news.dto';
@Controller('news')
export class NewsController {
constructor(private readonly newsService: NewsService) {}
@Post()
create(@Body() createNewsDto: CreateNewsDto) {
return this.newsService.create(createNewsDto);
}
@Get()
findAll() {
return this.newsService.findAll();
}
@Get(':id')
findOne(@Param('id') id: string) {
return this.newsService.findOne(+id);
}
@Patch(':id')
update(@Param('id') id: string, @Body() updateNewsDto: UpdateNewsDto) {
return this.newsService.update(+id, updateNewsDto);
}
@Delete(':id')
remove(@Param('id') id: string) {
return this.newsService.remove(+id);
}
}
import { Module } from '@nestjs/common';
import { NewsService } from './news.service';
import { NewsController } from './news.controller';
@Module({
controllers: [NewsController],
providers: [NewsService]
})
export class NewsModule {}
import { Test, TestingModule } from '@nestjs/testing';
import { NewsService } from './news.service';
describe('NewsService', () => {
let service: NewsService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [NewsService],
}).compile();
service = module.get<NewsService>(NewsService);
});
it('should be defined', () => {
expect(service).toBeDefined();
});
});
import { Injectable } from '@nestjs/common';
import { CreateNewsDto } from './dto/create-news.dto';
import { UpdateNewsDto } from './dto/update-news.dto';
@Injectable()
export class NewsService {
create(createNewsDto: CreateNewsDto) {
return 'This action adds a new news';
}
findAll() {
return `This action returns all news`;
}
findOne(id: number) {
return `This action returns a #${id} news`;
}
update(id: number, updateNewsDto: UpdateNewsDto) {
return `This action updates a #${id} news`;
}
remove(id: number) {
return `This action removes a #${id} news`;
}
}
export class CreatePartnerDto {}
import { PartialType } from '@nestjs/mapped-types';
import { CreatePartnerDto } from './create-partner.dto';
export class UpdatePartnerDto extends PartialType(CreatePartnerDto) {}
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
import { PartnersService } from './partners.service';
import { CreatePartnerDto } from './dto/create-partner.dto';
import { UpdatePartnerDto } from './dto/update-partner.dto';
@Controller('partners')
export class PartnersController {
constructor(private readonly partnersService: PartnersService) {}
@Post()
create(@Body() createPartnerDto: CreatePartnerDto) {
return this.partnersService.create(createPartnerDto);
}
@Get()
findAll() {
return this.partnersService.findAll();
}
@Get(':id')
findOne(@Param('id') id: string) {
return this.partnersService.findOne(+id);
}
@Patch(':id')
update(@Param('id') id: string, @Body() updatePartnerDto: UpdatePartnerDto) {
return this.partnersService.update(+id, updatePartnerDto);
}
@Delete(':id')
remove(@Param('id') id: string) {
return this.partnersService.remove(+id);
}
}
import { Module } from '@nestjs/common';
import { PartnersService } from './partners.service';
import { PartnersController } from './partners.controller';
@Module({
controllers: [PartnersController],
providers: [PartnersService]
})
export class PartnersModule {}
import { Injectable } from '@nestjs/common';
import { CreatePartnerDto } from './dto/create-partner.dto';
import { UpdatePartnerDto } from './dto/update-partner.dto';
@Injectable()
export class PartnersService {
create(createPartnerDto: CreatePartnerDto) {
return 'This action adds a new partner';
}
findAll() {
return `This action returns all partners`;
}
findOne(id: number) {
return `This action returns a #${id} partner`;
}
update(id: number, updatePartnerDto: UpdatePartnerDto) {
return `This action updates a #${id} partner`;
}
remove(id: number) {
return `This action removes a #${id} partner`;
}
}
import { Global, INestApplication, Injectable, OnModuleInit } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit {
async onModuleInit(){
await this.$connect()
}
async enableShutdownHooks(app:INestApplication){
this.$on('beforeExit',async()=>{
await app.close()
})
}
}
\ No newline at end of file
import { ApiProperty } from "@nestjs/swagger"
import { IsEmpty, IsInt, isInt, IsNotEmpty, IsString, Length, MinLength } from "class-validator"
export class CreateProductDto {
@ApiProperty({type:String,description:'BAAS平台-前台功能'})
module: string
@ApiProperty({type:String,description:'联盟链管理'})
service: string
@ApiProperty({type:String,description:'支持在用户自卑主机上(至少4台主机)部署联盟链,支持联盟链删除'})
function: string
@IsNotEmpty()
@ApiProperty({type:Number,description:'1'})
productsId: number
@ApiProperty({type:Boolean,description:'true'})
dev:boolean
@ApiProperty({type:Boolean,description:'true'})
test:boolean
}
export class CreateFeatureDto {
@Length(2,14)
@ApiProperty({type:String,description:'true'})
title: string
@Length(2,220)
@ApiProperty({type:String,description:'true'})
description: string
@IsNotEmpty()
@IsInt()
@ApiProperty({type:Number,description:'true'})
productsId:number
}
\ No newline at end of file
import { PartialType } from '@nestjs/mapped-types';
import { CreateProductDto } from './create-product.dto';
export class UpdateProductDto extends PartialType(CreateProductDto) {}
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
import { ProductsService } from './products.service';
import { CreateFeatureDto, CreateProductDto } from './dto/create-product.dto';
import { UpdateProductDto } from './dto/update-product.dto';
import { ApiTags } from '@nestjs/swagger';
@ApiTags('Products')
@Controller('products')
export class ProductsController {
constructor(private readonly productsService: ProductsService) {}
@Post('/product')
create(@Body() createProductDto: CreateProductDto) {
return this.productsService.addProduct(createProductDto);
}
@Post('/feature')
addFeature(
@Body() featureDto: CreateFeatureDto
){
return this.productsService.addFeature(featureDto);
}
@Get()
findAll() {
return this.productsService.findAll();
}
@Get(':id')
findOne(@Param('id') id: string) {
return this.productsService.findOne(id);
}
// @Patch(':id')
// update(@Param('id') id: string, @Body() updateProductDto: UpdateProductDto) {
// return this.productsService.update(id, updateProductDto);
// }
@Delete(':id')
remove(@Param('id') id: string) {
return this.productsService.remove(id);
}
}
import { Module } from '@nestjs/common';
import { ProductsService } from './products.service';
import { ProductsController } from './products.controller';
import { PrismaService } from '../prisma/prisma.service';
@Module({
controllers: [ProductsController],
providers: [ProductsService,PrismaService]
})
export class ProductsModule {}
import { Injectable } from '@nestjs/common';
import { PrismaService } from '../prisma/prisma.service';
import { CreateFeatureDto, CreateProductDto } from './dto/create-product.dto';
import { UpdateProductDto } from './dto/update-product.dto';
@Injectable()
export class ProductsService {
constructor(private prisma:PrismaService){}
addProduct(data:CreateProductDto){
return this.prisma.productInfo.create({
data
})
}
addFeature(data: CreateFeatureDto){
return this.prisma.feature.create({
data
})
}
findAll() {
return this.prisma.products.findMany({
include:{
features:true
}
})
}
findOne(id: string) {
return this.prisma.products.findMany({
where:{
id:Number(id)
},
include:{
products:{
select:{
module:true,
service:true,
function:true,
dev:true,
test:true
},
orderBy:[
{
'module':'asc'
},
{
"service":'asc'
}
]
}
},
})
}
update(id: string, updateProductDto: UpdateProductDto) {
return `This action updates a #${id} product`;3
}
remove(id: string) {
return `This action removes a #${id} product`;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>33 System by Nest.js</div>
</body>
</html>
\ No newline at end of file
{
"extends": "./tsconfig.json",
"exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
}
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "es2017",
"sourceMap": true,
"outDir": "webservice",
"baseUrl": "./",
"incremental": true,
"skipLibCheck": true,
"strictNullChecks": false,
"noImplicitAny": false,
"strictBindCallApply": false,
"forceConsistentCasingInFileNames": false,
"noFallthroughCasesInSwitch": false,
"paths": {
"src/":["./src/*"]
}
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment