feat: api upload car img (#88)
This commit is contained in:
parent
eda869622e
commit
de54ac6669
@ -1,4 +1,4 @@
|
||||
import { GetOrder, CreateOrder } from "../../models/api";
|
||||
import { GetOrder, CreateOrder, UploadCarImage } from "../../models/api";
|
||||
|
||||
import { api } from "./api";
|
||||
import { extractBodyFromResponse, extractErrorMessageFromResponse } from "./utils";
|
||||
@ -19,5 +19,13 @@ export const landingApi = api.injectEndpoints({
|
||||
transformResponse: extractBodyFromResponse<CreateOrder.Response>,
|
||||
transformErrorResponse: extractErrorMessageFromResponse,
|
||||
}),
|
||||
uploadCarImage: mutation<UploadCarImage.Response, UploadCarImage.Params>({
|
||||
query: ({ orderId, body }) => ({
|
||||
url: `/order/${orderId}/upload-car-img`,
|
||||
body,
|
||||
method: 'POST'
|
||||
}),
|
||||
transformErrorResponse: extractErrorMessageFromResponse,
|
||||
}),
|
||||
})
|
||||
});
|
||||
|
@ -21,6 +21,17 @@ export namespace CreateOrder {
|
||||
};
|
||||
}
|
||||
|
||||
export namespace UploadCarImage {
|
||||
export type Response = void;
|
||||
export type Params = {
|
||||
orderId: Order.Id;
|
||||
/**
|
||||
* @example { file: File }
|
||||
*/
|
||||
body: FormData;
|
||||
};
|
||||
}
|
||||
|
||||
type GetArrItemType<ArrType> =
|
||||
ArrType extends Array<infer ItemType> ? ItemType : never;
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-require-imports */
|
||||
const router = require('express').Router();
|
||||
|
||||
const STUBS = { masters: 'success', orders: 'success', orderCreate: 'success', orderView: 'success-pending' };
|
||||
const STUBS = { masters: 'success', orders: 'success', orderCreate: 'success', orderView: 'success-pending', orderCarImg: 'success' };
|
||||
|
||||
router.get('/set/:name/:value', (req, res) => {
|
||||
const { name, value } = req.params;
|
||||
@ -37,6 +37,12 @@ router.get('/', (req, res) => {
|
||||
${generateRadioInput('orderView', 'success-working')}
|
||||
${generateRadioInput('orderView', 'error')}
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Лендинг - Детали заказа, фото машины</legend>
|
||||
${generateRadioInput('orderCarImg', 'success')}
|
||||
${generateRadioInput('orderCarImg', 'error-file-type')}
|
||||
${generateRadioInput('orderCarImg', 'error-file-size')}
|
||||
</fieldset>
|
||||
</div>`);
|
||||
});
|
||||
|
||||
|
@ -98,6 +98,22 @@ router.post('/order/create', (req, res) => {
|
||||
);
|
||||
});
|
||||
|
||||
router.post('/order/:orderId/upload-car-img', (req, res) => {
|
||||
const { orderId } = req.params;
|
||||
const stubName = `${orderId}-${STUBS.orderCarImg}`;
|
||||
|
||||
try {
|
||||
res
|
||||
.status(/error/.test(stubName) ? 500 : 200)
|
||||
.send(require(`../json/landing-order-car-image-upload/${stubName}.json`));
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
res
|
||||
.status(500)
|
||||
.send(commonError);
|
||||
}
|
||||
});
|
||||
|
||||
router.use('/admin', require('./admin'));
|
||||
|
||||
module.exports = router;
|
||||
|
@ -0,0 +1,4 @@
|
||||
{
|
||||
"success": false,
|
||||
"error": "Invalid car image file size. Limit is 5MB"
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
{
|
||||
"success": false,
|
||||
"error": "Invalid car image file type. Allowed types: jpg, png"
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"success": true
|
||||
}
|
Loading…
Reference in New Issue
Block a user