Skip to content

Commit a4915e3

Browse files
committed
first commit for product use case
1 parent b4ed6da commit a4915e3

31 files changed

Lines changed: 1318 additions & 664 deletions

File tree

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
const {
2+
createProductUseCase
3+
} = require("./product-handlers");
4+
5+
const {
6+
makeProductModelHandler
7+
} = require("../../../enterprise-business-rules/entities");
8+
9+
10+
const createProductUseCaseHandler = createProductUseCase({ makeProductModelHandler });
11+
12+
module.exports = {
13+
createProductUseCaseHandler,
14+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
/**
3+
* Creates a new product in the database using the provided product data.
4+
*
5+
* @param {Object} options - An object containing the following properties:
6+
* - makeProductModelHandler: A function that validates the product data and returns normalized data.
7+
* - createProductHandler: An object containing the createProduct function to store the product in the database.
8+
* - productData: The data of the product to be created.
9+
* - errorHandlers: An object containing error handlers for validation errors.
10+
* @return {Promise<Object>} A promise that resolves to the newly created product, frozen to prevent mutation.
11+
* @throws {Error} If there is an error during the creation process, an error with the error message is thrown.
12+
*/
13+
const createProductUseCase = ({ makeProductModelHandler }) => async function
14+
createProductUseCaseHandler({ createProductDbHandler, productData, errorHandlers }) {
15+
16+
try {
17+
const validatedProductData = await makeProductModelHandler({ productData, errorHandlers });
18+
// store product in database mongodb
19+
const newProduct = await createProductDbHandler(validatedProductData);
20+
return Object.freeze(newProduct)
21+
} catch (error) {
22+
console.log("Error from product handler: ", error);
23+
logEvents(
24+
`${error.no}:${error.code}\t${error.name}\t${error.message}`,
25+
"product.log"
26+
);
27+
throw new Error(error.message);
28+
}
29+
}
30+
31+
32+
33+
module.exports = Object.freeze({
34+
createProductUseCase,
35+
})
36+
Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const {registerUserUseCase,
1+
const { registerUserUseCase,
22
deleteUserUseCase,
33
findAllUsersUseCase,
44
findOneUserUseCase,
@@ -9,32 +9,32 @@ const {registerUserUseCase,
99
blockUserUseCase,
1010
unBlockUserUseCase
1111
} = require("./user-handlers");
12-
const dbUserHandler = require("../../../framework-and-drivers/database-access/")
12+
const { dbUserHandler } = require("../../../interface-adapters/database-access")
1313
// const {loginUserUseCase} = require("./login-user");
1414

15-
const registerUserUserCaseHandler = registerUserUseCase({dbUserHandler});
16-
const loginUserUseCaseHandler = loginUserUseCase({dbUserHandler});
17-
const findOneUserUseCaseHandler = findOneUserUseCase({dbUserHandler});
18-
const findAllUsersUseCaseHandler = findAllUsersUseCase({dbUserHandler});
15+
const registerUserUserCaseHandler = registerUserUseCase({ dbUserHandler });
16+
const loginUserUseCaseHandler = loginUserUseCase({ dbUserHandler });
17+
const findOneUserUseCaseHandler = findOneUserUseCase({ dbUserHandler });
18+
const findAllUsersUseCaseHandler = findAllUsersUseCase({ dbUserHandler });
1919
const logoutUseCaseHandler = logoutUseCase();
20-
const refreshTokenUseCaseHandler = refreshTokenUseCase({dbUserHandler});
21-
const updateUserUseCaseHandler = updateUserUseCase({dbUserHandler});
22-
const deleteUserUseCaseHandler = deleteUserUseCase({dbUserHandler});
23-
const blockUserUseCaseHandler = blockUserUseCase({dbUserHandler});
24-
const unBlockUserUseCaseHandler = unBlockUserUseCase({dbUserHandler});
20+
const refreshTokenUseCaseHandler = refreshTokenUseCase({ dbUserHandler });
21+
const updateUserUseCaseHandler = updateUserUseCase({ dbUserHandler });
22+
const deleteUserUseCaseHandler = deleteUserUseCase({ dbUserHandler });
23+
const blockUserUseCaseHandler = blockUserUseCase({ dbUserHandler });
24+
const unBlockUserUseCaseHandler = unBlockUserUseCase({ dbUserHandler });
2525

2626

2727

2828
module.exports = {
29-
loginUserUseCaseHandler,
30-
logoutUseCaseHandler,
31-
refreshTokenUseCaseHandler,
32-
updateUserUseCaseHandler,
33-
deleteUserUseCaseHandler,
34-
findAllUsersUseCaseHandler,
35-
findOneUserUseCaseHandler,
36-
registerUserUserCaseHandler,
29+
loginUserUseCaseHandler,
30+
logoutUseCaseHandler,
31+
refreshTokenUseCaseHandler,
32+
updateUserUseCaseHandler,
33+
deleteUserUseCaseHandler,
34+
findAllUsersUseCaseHandler,
35+
findOneUserUseCaseHandler,
36+
registerUserUserCaseHandler,
3737
loginUserUseCaseHandler,
3838
blockUserUseCaseHandler,
3939
unBlockUserUseCaseHandler
40-
}
40+
}

0 commit comments

Comments
 (0)