Compare commits

...

2 Commits

Author SHA1 Message Date
46031a5fd2 etc 2023-09-20 13:31:00 +03:00
df10328d55 etc 2023-07-13 14:32:35 +03:00
6 changed files with 35 additions and 20 deletions

View File

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

View File

@ -7,6 +7,6 @@ export default defineConfig({
dir: 'dist',
format: 'es'
},
plugins: [typescript()],
external: ['path', 'axp-ts', 'dotenv', 'express', 'mongoose'],
plugins: [typescript()]
})

View File

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

View File

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

View File

@ -1,4 +1,4 @@
import { TNotificationItem } from 'axp-ts'
import { NotificationItem, TNotificationItem } from 'axp-ts'
/**
* Тип - Http ошибка.
@ -13,15 +13,17 @@ export type THttpError = {
* Http ошибка.
*/
export class HttpError implements THttpError {
status: number = 500
message: string = 'Server Error'
status: number
message: string
errors: TNotificationItem[] = []
constructor(args?: { text?: string; code?: string; statusCode?: number }) {
this.status = args?.statusCode || 500
this.message = this.getStatusMessage(this.status)
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 { DataResultEntity } from 'axp-ts'
@ -9,9 +11,9 @@ import { HttpError } from './errors'
*/
export const resultHandler = (
result: any,
{ }: Request,
{}: Request,
res: Response,
{ }: NextFunction
{}: NextFunction
) => {
const dR = new DataResultEntity()
@ -46,8 +48,8 @@ export const resultHandler = (
* Обработчик 404 ошибки.
*/
export const api404Handler = (
{ }: Request,
{ }: Response,
{}: Request,
{}: Response,
next: NextFunction
) => {
next(
@ -75,10 +77,6 @@ export const zodMiddle =
(schemas: TZodMiddleArgs) =>
(req: Request, {}: Response, next: NextFunction) => {
try {
// req.params._id = ''
// req.body.email = 'test'
// console.log(req.body)
if (schemas.query) req.query = schemas.query.parse(req.query)
if (schemas.params) req.params = schemas.params.parse(req.params)
if (schemas.body) req.body = schemas.body.parse(req.body)
@ -96,3 +94,16 @@ export const zodMiddle =
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)
}
}