Introduce caching in CustomerRepository and refactor API integration

- Add in-memory caching for customer data in `CustomerRepository` to reduce API calls.
- Replace direct API calls with methods from `CustomerRepository`.
- Update customer-related pages (`[id]/page.tsx`, `customers/page.tsx`) to use `CustomerRepository` for data fetching.
- Adjust breadcrumb resolver to leverage `CustomerRepository`.
- Remove `axios` dependency from customer-related components.
This commit is contained in:
2025-07-07 22:02:55 +02:00
parent 4ae62f2911
commit 328c0537ba
4 changed files with 106 additions and 35 deletions

View File

@@ -22,9 +22,9 @@ import {
import {motion} from "framer-motion";
import {ArrowRight} from "lucide-react";
import {NewCustomerModal} from "@/components/customers/modal/NewCustomerModal";
import axios from "axios";
import {Customer} from "@/services/customers/entities/customer";
import Link from "next/link";
import {CustomerRepository} from "@/services/customers/repositories/customerRepository";
export default function CustomersPage() {
const [customers, setCustomers] = useState<Customer[]>([]);
@@ -35,9 +35,9 @@ export default function CustomersPage() {
useEffect(() => {
setLoading(true);
axios.get("/api/customers")
.then((res) => {
setCustomers(res.data);
CustomerRepository.getAll()
.then((data) => {
setCustomers(data);
})
.catch((error) => {
console.error('Error fetching customers:', error);
@@ -176,4 +176,4 @@ export default function CustomersPage() {
</motion.div>
</div>
);
}
}