noImplicitAny modifications

This commit is contained in:
Kfir Dayan 2023-06-26 09:28:32 +03:00
parent 12dc986941
commit e2852b6b90
8 changed files with 48 additions and 44 deletions

View file

@ -14,26 +14,23 @@ export async function addToCart(req: Request, res: Response) {
res.status(400).json({ error: 'A Valid Product id is required.' });
return;
}
const isProductExists = await Product.exists({ _id: productId });
if (!isProductExists) {
res.status(404).json({ error: 'Product not found.' });
return;
}
let cart: ICart | null = await Cart.findOne({ userId });
let [product, cart] = await getProductAndCart(productId, userId);
console.log(`product: ${product}, cart: ${cart}`);
if (!cart) {
cart = await Cart.create({
userId,
products: { [productId]: 1 },
products: {},
});
} else {
const currentQuantity = cart.products[productId];
if (currentQuantity === undefined) {
cart.products[productId] = 1;
} else {
cart.products[productId] += 1;
}
cart.markModified('products');
}
const currentQuantity = cart.products[productId];
if (currentQuantity === undefined) {
cart.products[productId] = 1;
} else {
cart.products[productId] += 1;
}
cart.markModified('products');
await cart.save();
res.status(200).json({
products: cart.products,
@ -44,6 +41,18 @@ export async function addToCart(req: Request, res: Response) {
}
}
async function getProductAndCart(productId: string, userId: string) {
try {
return Promise.all([
Product.findById(productId),
Cart.findOne({ userId }),
])
} catch (error) {
console.error('Error adding product to cart:', error);
// res.status(500).json({ error: 'An error occurred while adding the product to the cart.' });
}
}
export async function listCart(req: Request, res: Response) {
try {
const { userId } = req.body;

View file

@ -1,9 +1,9 @@
import { Request, Response } from 'express';
import { Request, Response, NextFunction} from 'express';
import { Product } from '../schemas/productSchema';
import { createProduct, getAllProducts, getOne } from '../models/productModel';
import { ApiError } from '../utils/ApiError';
const create = async (req: Request, res: Response, next) => {
const create = async (req: Request, res: Response, next: NextFunction) => {
try {
const { name, description, price } = req.body;
const product = await createProduct({

View file

@ -1,10 +1,10 @@
import { Request, Response } from 'express';
import { Request, Response, NextFunction } from 'express';
import { createUser, loginUser, getAllUsers, deleteUser } from '../models/userModel';
import { ApiError } from '../utils/ApiError';
import jwt from 'jsonwebtoken';
import { clearJwtCookie, setJwtCookie } from '../middlewares/checkAuth';
const create = async (req: Request, res: Response, next) => {
const create = async (req: Request, res: Response, next: NextFunction) => {
try {
const { email, password, address } = req.body;
const user = await createUser({
@ -24,7 +24,7 @@ const create = async (req: Request, res: Response, next) => {
}
}
const login = async (req: Request, res: Response, next) => {
const login = async (req: Request, res: Response, next: NextFunction) => {
try {
const { email, password } = req.body;
const user: any = await loginUser({
@ -53,7 +53,7 @@ const login = async (req: Request, res: Response, next) => {
}
}
const logout = async (req: Request, res: Response, next) => {
const logout = async (req: Request, res: Response, next: NextFunction) => {
try {
clearJwtCookie(res);
res.status(200).json({ message: 'Logout successful' });
@ -65,7 +65,7 @@ const logout = async (req: Request, res: Response, next) => {
}
}
const getAll = async (req: Request, res: Response, next) => {
const getAll = async (req: Request, res: Response, next: NextFunction) => {
try {
const users = await getAllUsers();
res.status(200).json(users);
@ -77,7 +77,7 @@ const getAll = async (req: Request, res: Response, next) => {
}
}
const deleteHandler = async (req: Request, res: Response, next) => {
const deleteHandler = async (req: Request, res: Response, next: NextFunction) => {
try {
const { id } = req.params;
const user = await deleteUser(id);

View file

@ -6,7 +6,6 @@ import userRouter from './routes/userRouter';
import productRouter from './routes/productRouter';
import cartRouter from './routes/cartRouter';
import { errorHandler } from './middlewares/errorHandler';
import { ApiError } from './utils/ApiError';
@ -47,8 +46,6 @@ app.all('*', (req, res, next) => {
next(error)
});
app.use(errorHandler);
// Start server
app.listen(PORT, () => {

View file

@ -1,15 +0,0 @@
const errorHandler = (error, req, res, next) => {
error.statusCode = error.statusCode || 500;
error.message = error.message || 'Internal server error';
error.status = error.status || 'error';
res.status(error.statusCode).json({
status: error.status,
statusCode: error.statusCode,
message: error.message
});
}
export {
errorHandler
}

View file

@ -1,10 +1,9 @@
import { Product } from '../schemas/productSchema';
import { Request, Response } from 'express';
import { errorHandler } from '../middlewares/errorHandler';
import { ApiError } from '../utils/ApiError';
const createProduct = async (product: any) => {
try {
try {
const newProduct = new Product(product);
const isExist = await Product.findOne({ name: product.name, userId: product.userId });
@ -54,6 +53,19 @@ const getOne = async (id: string) => {
}
}
const removeProduct = async (id: string) => {
try {
const product = await Product.findByIdAndDelete(id);
return product;
} catch {
const error = new ApiError('Product not found');
error.statusCode = 404;
error.status = 'fail';
return error;
}
}
export {
createProduct,

View file

@ -9,6 +9,6 @@ userRouter.post('/', isValidCreateUser, create);
userRouter.get('/', getAll);
userRouter.post('/login', isValidLogin, login);
userRouter.post('/logout', logout);
userRouter.delete('/:id', authenticateToken ,deleteHandler)
userRouter.delete('/:id', authenticateToken, deleteHandler)
export default userRouter;

View file

@ -9,5 +9,6 @@
"sourceMap": true,
"outDir": "./dist",
"rootDir": "./src",
"noImplicitAny": true,
}
}