Skip to content

Commit 30c269f

Browse files
authored
Merge pull request #1 from frckbrice/feature/product_module
Feature/product module
2 parents baafc2c + d7133ee commit 30c269f

52 files changed

Lines changed: 3018 additions & 305 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.eslintrc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"extends": [
3+
"prettier"
4+
],
5+
"rules": {
6+
"indent": "error"
7+
}
8+
}

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
node_modules
2-
.env
2+
.env
3+
4+
/interface-adapters/middleware/logs/
5+
logs
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: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
const { registerUserUseCase,
2+
deleteUserUseCase,
3+
findAllUsersUseCase,
4+
findOneUserUseCase,
5+
loginUserUseCase,
6+
logoutUseCase,
7+
refreshTokenUseCase,
8+
updateUserUseCase,
9+
blockUserUseCase,
10+
unBlockUserUseCase
11+
} = require("./user-handlers");
12+
const { dbUserHandler } = require("../../../interface-adapters/database-access")
13+
// const {loginUserUseCase} = require("./login-user");
14+
15+
const registerUserUserCaseHandler = registerUserUseCase({ dbUserHandler });
16+
const loginUserUseCaseHandler = loginUserUseCase({ dbUserHandler });
17+
const findOneUserUseCaseHandler = findOneUserUseCase({ dbUserHandler });
18+
const findAllUsersUseCaseHandler = findAllUsersUseCase({ dbUserHandler });
19+
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 });
25+
26+
27+
28+
module.exports = {
29+
loginUserUseCaseHandler,
30+
logoutUseCaseHandler,
31+
refreshTokenUseCaseHandler,
32+
updateUserUseCaseHandler,
33+
deleteUserUseCaseHandler,
34+
findAllUsersUseCaseHandler,
35+
findOneUserUseCaseHandler,
36+
registerUserUserCaseHandler,
37+
loginUserUseCaseHandler,
38+
blockUserUseCaseHandler,
39+
unBlockUserUseCaseHandler
40+
}

0 commit comments

Comments
 (0)