330 lines
9.8 KiB
TypeScript
330 lines
9.8 KiB
TypeScript
import express from 'express';
|
|
import { Request, Response, NextFunction } from 'express';
|
|
import { getRepository,getConnection } from 'typeorm';
|
|
import { validationMiddleware, redisMiddleware } from '../middlewares';
|
|
import {
|
|
InternalServerErrorException,
|
|
NoDataFoundException,
|
|
} from '../exceptions';
|
|
import { Global } from "../global";
|
|
|
|
import { BlockchainInput } from '../entities';
|
|
import {
|
|
BlockchainInputCreateDto,
|
|
BlockchainInputSingleViewDto,
|
|
BlockchainInputUpdateDto,
|
|
BlockchainInputPaginationDto,
|
|
} from '../dtos';
|
|
import { Paginate } from '../utils';
|
|
|
|
export class BlockchainInputController {
|
|
public path = '/blockchain_input';
|
|
public router = express.Router();
|
|
|
|
constructor() {
|
|
this.IntializeRoutes();
|
|
}
|
|
|
|
public IntializeRoutes() {
|
|
/**
|
|
* @swagger
|
|
* /epic_explorer/v1/blockchain_input:
|
|
* post:
|
|
* tags:
|
|
* - name: BLOCKCHAIN_INPUT | BLOCKCHAIN_INPUT CONTROLLER
|
|
* summary: create a blockchain_input
|
|
* description: create a blockchain_input
|
|
* consumes:
|
|
* - application/json
|
|
* produces:
|
|
* - application/json
|
|
* parameters:
|
|
* - name: BlockchainInput
|
|
* description: create a blockchain_input
|
|
* in: body
|
|
* required: true
|
|
* schema:
|
|
* $ref: '#/definitions/BlockchainInputDto'
|
|
* responses:
|
|
* 200:
|
|
* description: blockchain_input created successfully
|
|
* definitions:
|
|
* BlockchainInputDto:
|
|
* description: Dto
|
|
* properties:
|
|
* Id:
|
|
* type: integer
|
|
* Data:
|
|
* type: string
|
|
* Block:
|
|
* type: string
|
|
*/
|
|
|
|
this.router.post(
|
|
`${this.path}`,
|
|
validationMiddleware(BlockchainInputCreateDto),
|
|
redisMiddleware(process.env.REDIS_EXPIRY),
|
|
this.BlockchainInputCreate,
|
|
);
|
|
|
|
/**
|
|
* @swagger
|
|
* /epic_explorer/v1/blockchain_input/list:
|
|
* get:
|
|
* tags:
|
|
* - name: BLOCKCHAIN_INPUT | BLOCKCHAIN_INPUT CONTROLLER
|
|
* description: pagination blockchain_input
|
|
* summary: pagination blockchain_input
|
|
* consumes:
|
|
* - application/json
|
|
* produces:
|
|
* - application/json
|
|
* parameters:
|
|
* - name: current_page
|
|
* description: current page specification
|
|
* in: query
|
|
* type: integer
|
|
* required: true
|
|
* - name: page_size
|
|
* description: page size specification
|
|
* in: query
|
|
* type: integer
|
|
* required: true
|
|
* - name: max_pages
|
|
* description: max pages specification
|
|
* in: query
|
|
* type: integer
|
|
* required: true
|
|
* responses:
|
|
* 200:
|
|
* description: blockchain_input list fetched successfully
|
|
*/
|
|
this.router.get(
|
|
`${this.path}/list`,
|
|
validationMiddleware(BlockchainInputPaginationDto),
|
|
redisMiddleware(process.env.REDIS_EXPIRY),
|
|
this.BlockchainInputPagination,
|
|
);
|
|
|
|
/**
|
|
* @swagger
|
|
* /epic_explorer/v1/blockchain_input/id:
|
|
* get:
|
|
* tags:
|
|
* - name: BLOCKCHAIN_INPUT | BLOCKCHAIN_INPUT CONTROLLER
|
|
* summary: get single blockchain_input
|
|
* description: get single blockchain_input
|
|
* consumes:
|
|
* - application/json
|
|
* produces:
|
|
* - application/json
|
|
* parameters:
|
|
* - name: Id
|
|
* in: path
|
|
* description: blockchain_input id
|
|
* required: true
|
|
* type: string
|
|
* responses:
|
|
* 200:
|
|
* description: blockchain_input successfully fetched for given id..
|
|
*/
|
|
this.router.get(
|
|
`${this.path}/:id`,
|
|
validationMiddleware(BlockchainInputSingleViewDto),
|
|
redisMiddleware(process.env.REDIS_EXPIRY),
|
|
this.BlockchainInputFetch,
|
|
);
|
|
|
|
/**
|
|
* @swagger
|
|
* /epic_explorer/v1/blockchain_input:
|
|
* patch:
|
|
* tags:
|
|
* - name: BLOCKCHAIN_INPUT | BLOCKCHAIN_INPUT CONTROLLER
|
|
* summary: update a blockchain_input
|
|
* description: update a blockchain_input
|
|
* consumes:
|
|
* - application/json
|
|
* produces:
|
|
* - application/json
|
|
* parameters:
|
|
* - name: blockchain_input
|
|
* description:
|
|
* in: body
|
|
* required: true
|
|
* schema:
|
|
* $ref: '#/definitions/BlockchainInputDto'
|
|
* responses:
|
|
* 200:
|
|
* description: blockchain_input updated successfully
|
|
*/
|
|
this.router.patch(
|
|
`${this.path}`,
|
|
validationMiddleware(BlockchainInputUpdateDto),
|
|
redisMiddleware(process.env.REDIS_EXPIRY),
|
|
this.BlockchainInputUpdate,
|
|
);
|
|
|
|
/**
|
|
* @swagger
|
|
* /epic_explorer/v1/blockchain_input/id:
|
|
* delete:
|
|
* tags:
|
|
* - name: BLOCKCHAIN_INPUT | BLOCKCHAIN_INPUT CONTROLLER
|
|
* summary: delete a blockchain_input
|
|
* description: delete a blockchain_input
|
|
* consumes:
|
|
* - application/json
|
|
* produces:
|
|
* - application/json
|
|
* parameters:
|
|
* - name: Id
|
|
* in: path
|
|
* description: blockchain_input id
|
|
* required: true
|
|
* type: string
|
|
* responses:
|
|
* 200:
|
|
* description: blockchain_input successfully deleted for given id..
|
|
*/
|
|
this.router.delete(
|
|
`${this.path}/:id`,
|
|
validationMiddleware(BlockchainInputSingleViewDto),
|
|
redisMiddleware(process.env.REDIS_EXPIRY),
|
|
this.BlockchainInputDelete,
|
|
);
|
|
}
|
|
|
|
private BlockchainInputCreate = async (
|
|
request: Request,
|
|
response: Response,
|
|
next: NextFunction,
|
|
) => {
|
|
try {
|
|
const BlockchainInputRequestData: BlockchainInputCreateDto = request.body;
|
|
const BlockchainInputCreateQuery = await getConnection(Global.network).getRepository(
|
|
BlockchainInput,
|
|
).save(BlockchainInputRequestData);
|
|
response.status(200).json({
|
|
status: 200,
|
|
timestamp: Date.now(),
|
|
message: 'blockchain_input created successfully',
|
|
response: BlockchainInputCreateQuery,
|
|
});
|
|
} catch (error) {
|
|
next(new InternalServerErrorException(error));
|
|
}
|
|
};
|
|
|
|
private BlockchainInputFetch = async (
|
|
request: Request,
|
|
response: Response,
|
|
next: NextFunction,
|
|
) => {
|
|
try {
|
|
const BlockchainInputFetchQuery = await getConnection(Global.network).getRepository(
|
|
BlockchainInput,
|
|
).findOne({
|
|
where: { id: request.params.id },
|
|
});
|
|
BlockchainInputFetchQuery
|
|
? response.status(200).json({
|
|
status: 200,
|
|
timestamp: Date.now(),
|
|
message: 'blockchain_inputsuccessfully fetched for given id.',
|
|
response: { ...BlockchainInputFetchQuery },
|
|
})
|
|
: next(new NoDataFoundException());
|
|
} catch (error) {
|
|
next(new InternalServerErrorException(error));
|
|
}
|
|
};
|
|
|
|
private BlockchainInputUpdate = async (
|
|
request: Request,
|
|
response: Response,
|
|
next: NextFunction,
|
|
) => {
|
|
try {
|
|
const BlockchainInputRequestData: BlockchainInputUpdateDto = request.body;
|
|
const BlockchainInputUpdateQuery = await getConnection(Global.network).getRepository(
|
|
BlockchainInput,
|
|
).update(BlockchainInputRequestData.Id, BlockchainInputRequestData);
|
|
response.status(200).json({
|
|
status: 200,
|
|
timestamp: Date.now(),
|
|
message: 'blockchain_input updated succesfully',
|
|
response: { ...BlockchainInputUpdateQuery },
|
|
});
|
|
} catch (error) {
|
|
next(new InternalServerErrorException(error));
|
|
}
|
|
};
|
|
|
|
private BlockchainInputDelete = async (
|
|
request: Request,
|
|
response: Response,
|
|
next: NextFunction,
|
|
) => {
|
|
try {
|
|
const BlockchainInputDeleteQuery = await getConnection(Global.network).getRepository(
|
|
BlockchainInput,
|
|
).delete(request.params.Id);
|
|
BlockchainInputDeleteQuery
|
|
? response.status(200).json({
|
|
status: 200,
|
|
timestamp: Date.now(),
|
|
message: 'blockchain_input successfully deleted for given id.',
|
|
response: { ...BlockchainInputDeleteQuery },
|
|
})
|
|
: next(new NoDataFoundException());
|
|
} catch (error) {
|
|
next(new InternalServerErrorException(error));
|
|
}
|
|
};
|
|
|
|
private BlockchainInputPagination = async (
|
|
request: Request,
|
|
response: Response,
|
|
next: NextFunction,
|
|
) => {
|
|
try {
|
|
const BlockchainInputRequestData: BlockchainInputPaginationDto =
|
|
request.query;
|
|
const BlockchainInputCountQuery = await getConnection(Global.network).getRepository(
|
|
BlockchainInput,
|
|
).findAndCount({});
|
|
if (BlockchainInputCountQuery[1]) {
|
|
const PaginationReponseData = Paginate(
|
|
BlockchainInputCountQuery[1],
|
|
BlockchainInputRequestData.CurrentPage,
|
|
BlockchainInputRequestData.PageSize,
|
|
BlockchainInputRequestData.MaxPages,
|
|
);
|
|
const BlockchainInputPaginationQuery = await getConnection(Global.network).getRepository(
|
|
BlockchainInput,
|
|
).find({
|
|
skip: PaginationReponseData.startIndex,
|
|
take: PaginationReponseData.pageSize,
|
|
order: {
|
|
Id: 'DESC',
|
|
},
|
|
});
|
|
response.status(200).json({
|
|
status: 200,
|
|
timestamp: Date.now(),
|
|
message: 'blockchain_input list fetched successfully',
|
|
response: {
|
|
...PaginationReponseData,
|
|
...BlockchainInputPaginationQuery,
|
|
},
|
|
});
|
|
} else {
|
|
next(new NoDataFoundException());
|
|
}
|
|
} catch (error) {
|
|
next(new InternalServerErrorException(error));
|
|
}
|
|
};
|
|
}
|