-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Enabled Hibernate stat and sql parameter binding
- Loading branch information
Syed Abdullah
committed
Oct 24, 2024
1 parent
1346aaa
commit ebe2416
Showing
3 changed files
with
128 additions
and
68 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,98 +1,132 @@ | ||
# Simple E-commerce REST API | ||
# 🌟 Simple E-commerce REST API | ||
|
||
[](https://github.com/syedabdullahrahman/e-commerce/actions/workflows/maven.yml) | ||
|
||
--- | ||
|
||
## 📚 Table of Contents | ||
- [Technologies Used](#technologies-used) | ||
- [Features](#features) | ||
- [Getting Started](#getting-started) | ||
- [Prerequisites](#prerequisites) | ||
- [Installation](#installation) | ||
- [Database Schema](#database-schema) | ||
- [Screenshots](#screenshots) | ||
- [Contributing](#contributing) | ||
- [License](#license) | ||
|
||
--- | ||
|
||
## 🛠️ Technologies Used | ||
|
||
This project leverages a variety of powerful technologies to create a seamless e-commerce experience: | ||
|
||
- **Java 17** | ||
- **Spring Boot 3.2.2** | ||
- **Spring Data JPA** | ||
- **Hibernate** | ||
- **MySQL** | ||
- **PostgreSQL** | ||
- **Maven** | ||
- **Liquibase** | ||
- **OpenAPI** | ||
- **Docker** | ||
- **Spring Data REST** | ||
- **Test Containers** | ||
- **Prometheus** | ||
- **Grafana** | ||
- **Tempo** | ||
|
||
--- | ||
|
||
## 🚀 Features | ||
|
||
Discover the robust features of this e-commerce API: | ||
|
||
- **Customer Wish List**: Easily retrieve and manage customer wish lists. | ||
- **Sales Insights**: Get total sales for the current day and identify peak sales days. | ||
- **Top Selling Items**: Fetch top N selling items of all time and for the last month based on sales metrics. | ||
- **Integration Testing**: Robust integration testing using Test Containers for both MySQL and PostgreSQL databases, ensuring quality across different environments. | ||
- **Observability**: Monitor application performance with Prometheus, Grafana, and Tempo. | ||
|
||
--- | ||
|
||
# Table of Contents | ||
- [Technologies Used](#technologies-used) | ||
- [Features](#features) | ||
- [Getting Started](#getting-started) | ||
- [Prerequisites](#prerequisites) | ||
- [Installation](#installation) | ||
- [Database Schema](#database-schema) | ||
- [Screenshots](#screenshots) | ||
|
||
# Technologies Used | ||
|
||
- Java 17 | ||
- Spring Boot 3.2.2 | ||
- Spring Data JPA | ||
- Hibernate | ||
- MySQL | ||
- Maven | ||
- Liquibase | ||
- OpenAPI | ||
- Docker | ||
- Spring Data REST | ||
- Test Containers | ||
- Prometheus | ||
- Grafana | ||
- Tempo | ||
|
||
# Features | ||
|
||
- Retrieve a customer's wish list. | ||
- Get the total sales amount for the current day. | ||
- Determine the maximum sales day within a specified time range. | ||
- Fetch the top N selling items of all time based on total sales amount. | ||
- Get the top N selling items of the last month based on the number of sales. | ||
- **Integration Testing**: Utilizes Test Containers for robust integration testing. | ||
- **Observability**: Integrated with Prometheus, Grafana, and Tempo for monitoring and observability of the application. | ||
|
||
# Getting Started | ||
|
||
## Prerequisites | ||
|
||
Ensure you have the following installed: | ||
## 🏁 Getting Started | ||
|
||
### Prerequisites | ||
|
||
Before you begin, ensure you have the following installed: | ||
|
||
- **Java 17+** | ||
- **Docker** | ||
|
||
## Installation | ||
### Installation | ||
|
||
Follow these steps to install and configure the project: | ||
Follow these steps to get your local environment up and running: | ||
|
||
1. Clone the repository. | ||
1. **Clone the repository**: | ||
```bash | ||
git clone https://github.com/syedabdullahrahman/e-commerce.git | ||
``` | ||
2. Navigate to the project directory. | ||
2. **Navigate to the project directory**: | ||
```bash | ||
cd e-commerce | ||
``` | ||
3. **Build the project using Maven**: | ||
```bash | ||
mvn clean install | ||
``` | ||
4. **Run the application**: | ||
```bash | ||
java -jar target/demo-0.0.1-SNAPSHOT.jar | ||
``` | ||
|
||
3. Build the project using Maven. | ||
```bash | ||
mvn clean install | ||
``` | ||
4. Run the application | ||
### OR | ||
|
||
**Run the application using Docker Compose**: | ||
```bash | ||
java -jar target/demo-0.0.1-SNAPSHOT.jar | ||
docker-compose up | ||
``` | ||
|
||
### OR | ||
--- | ||
|
||
## 📸 Screenshots | ||
|
||
Here’s a glimpse of the application in action: | ||
|
||
- **OpenAPI / Swagger UI for API testing** | ||
 | ||
|
||
- **Application HTTP requests metrics** | ||
 | ||
|
||
**Run the application using Docker Compose:** | ||
```bash | ||
docker-compose up | ||
``` | ||
- **Overall application metrics** | ||
 | ||
|
||
# Screenshots | ||
### 📊 Database Schema | ||
|
||
- *OpenAPI or Swagger UI for testing API* | ||
The database schema is derived from the [MySQL Sample Database](https://www.mysqltutorial.org/getting-started-with-mysql/mysql-sample-database/). Here’s the schema diagram: | ||
|
||
 | ||
 | ||
|
||
- *Application HTTP requests metrics* | ||
--- | ||
|
||
 | ||
## 🤝 Contributing | ||
|
||
We welcome contributions! If you'd like to contribute, please follow these steps: | ||
|
||
- *Application overall metrics* | ||
1. Fork the repository. | ||
2. Create a new branch (`git checkout -b feature/YourFeature`). | ||
3. Make your changes and commit them (`git commit -m 'Add some feature'`). | ||
4. Push to the branch (`git push origin feature/YourFeature`). | ||
5. Open a pull request. | ||
|
||
 | ||
--- | ||
|
||
## 📝 License | ||
|
||
### Database Schema | ||
The database schema is from [MySQL Sample Database](https://www.mysqltutorial.org/getting-started-with-mysql/mysql-sample-database/) | ||
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. | ||
|
||
Here is the schema diagram: | ||
--- | ||
|
||
 | ||
Feel free to reach out if you have any questions or suggestions! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters