This commit is contained in:
AntoXa PRO 2023-09-20 13:31:00 +03:00
parent df10328d55
commit 46031a5fd2
5 changed files with 34 additions and 19 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "axp-server", "name": "axp-server",
"version": "1.4.12", "version": "1.4.13",
"description": "My helper library", "description": "My helper library",
"author": "AntoXa PRO <info@antoxa.pro>", "author": "AntoXa PRO <info@antoxa.pro>",
"homepage": "https://antoxahub.ru/antoxa/axp-server", "homepage": "https://antoxahub.ru/antoxa/axp-server",
@ -20,16 +20,16 @@
"prepare": "npm run build" "prepare": "npm run build"
}, },
"dependencies": { "dependencies": {
"axp-ts": "^1.9.6", "axp-ts": "^1.9.10",
"dotenv": "^16.3.1", "dotenv": "^16.3.1",
"express": "^4.18.2", "express": "^4.18.2",
"mongoose": "^6.11.2" "mongoose": "^6.12.0"
}, },
"devDependencies": { "devDependencies": {
"@rollup/plugin-typescript": "^11.1.2", "@rollup/plugin-typescript": "^11.1.3",
"@types/express": "^4.17.17", "@types/express": "^4.17.17",
"prettier": "^2.8.8", "prettier": "^2.8.8",
"rollup": "^3.26.2", "rollup": "^3.29.2",
"tslib": "^2.6.0" "tslib": "^2.6.2"
} }
} }

View File

@ -8,6 +8,7 @@ import { api404Handler, resultHandler } from './core/handlers'
export default async ( export default async (
modules: (typeof AppModule)[] = [] modules: (typeof AppModule)[] = []
): Promise<Express> => { ): Promise<Express> => {
// Express. // Express.
const app = express() const app = express()
const apiRouter = Router() const apiRouter = Router()

View File

@ -3,6 +3,7 @@ import { DataResultEntity } from 'axp-ts'
/** /**
* Базовый контроллер. * Базовый контроллер.
* @deprecated
*/ */
export class BaseController { export class BaseController {
/** /**

View File

@ -1,4 +1,4 @@
import { TNotificationItem } from 'axp-ts' import { NotificationItem, TNotificationItem } from 'axp-ts'
/** /**
* Тип - Http ошибка. * Тип - Http ошибка.
@ -13,15 +13,17 @@ export type THttpError = {
* Http ошибка. * Http ошибка.
*/ */
export class HttpError implements THttpError { export class HttpError implements THttpError {
status: number = 500 status: number
message: string = 'Server Error' message: string
errors: TNotificationItem[] = [] errors: TNotificationItem[] = []
constructor(args?: { text?: string; code?: string; statusCode?: number }) { constructor(args?: { text?: string; code?: string; statusCode?: number }) {
this.status = args?.statusCode || 500 this.status = args?.statusCode || 500
this.message = this.getStatusMessage(this.status) this.message = this.getStatusMessage(this.status)
if (args?.text) { if (args?.text) {
this.errors.push({ code: args.code || 'error', text: args.text }) this.errors.push(
new NotificationItem({ code: args.code || 'error', text: args.text })
)
} }
} }

View File

@ -1,4 +1,6 @@
import { Request, Response, NextFunction } from 'express' import type { Request, Response, NextFunction } from 'express'
import type { IFormModel } from 'axp-ts'
import { z } from 'zod' import { z } from 'zod'
import { DataResultEntity } from 'axp-ts' import { DataResultEntity } from 'axp-ts'
@ -9,9 +11,9 @@ import { HttpError } from './errors'
*/ */
export const resultHandler = ( export const resultHandler = (
result: any, result: any,
{ }: Request, {}: Request,
res: Response, res: Response,
{ }: NextFunction {}: NextFunction
) => { ) => {
const dR = new DataResultEntity() const dR = new DataResultEntity()
@ -46,8 +48,8 @@ export const resultHandler = (
* Обработчик 404 ошибки. * Обработчик 404 ошибки.
*/ */
export const api404Handler = ( export const api404Handler = (
{ }: Request, {}: Request,
{ }: Response, {}: Response,
next: NextFunction next: NextFunction
) => { ) => {
next( next(
@ -75,10 +77,6 @@ export const zodMiddle =
(schemas: TZodMiddleArgs) => (schemas: TZodMiddleArgs) =>
(req: Request, {}: Response, next: NextFunction) => { (req: Request, {}: Response, next: NextFunction) => {
try { try {
// req.params._id = ''
// req.body.email = 'test'
// console.log(req.body)
if (schemas.query) req.query = schemas.query.parse(req.query) if (schemas.query) req.query = schemas.query.parse(req.query)
if (schemas.params) req.params = schemas.params.parse(req.params) if (schemas.params) req.params = schemas.params.parse(req.params)
if (schemas.body) req.body = schemas.body.parse(req.body) if (schemas.body) req.body = schemas.body.parse(req.body)
@ -96,3 +94,16 @@ export const zodMiddle =
next(httpError) next(httpError)
} }
} }
export const validFormMiddle =
(model: IFormModel<any>) =>
(req: Request, {}: Response, next: NextFunction) => {
if (model.isValid()) {
req.body = model.obj
next()
} else {
const httpError = new HttpError({ statusCode: 400 })
httpError.errors = model.errors
next(httpError)
}
}