From 6d6322b0cd0ef1410d9747112756516f9fbd8daa Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sat, 11 Jan 2025 10:37:17 -0500 Subject: [PATCH] #84 refactor(frontend): extract methods to repository. --- .../don-confiao/src/components/Purchase.vue | 55 +++++++++---------- .../frontend/don-confiao/src/main.js | 8 ++- .../src/services/api-implementation.js | 21 +++++++ .../frontend/don-confiao/src/services/api.js | 19 +++++++ .../don-confiao/src/services/django-api.js | 42 ++++++++++++++ 5 files changed, 116 insertions(+), 29 deletions(-) create mode 100644 tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api-implementation.js create mode 100644 tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api.js create mode 100644 tienda_ilusion/don_confiao/frontend/don-confiao/src/services/django-api.js diff --git a/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/Purchase.vue b/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/Purchase.vue index 0747b8a..19c112d 100644 --- a/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/Purchase.vue +++ b/tienda_ilusion/don_confiao/frontend/don-confiao/src/components/Purchase.vue @@ -147,10 +147,11 @@ diff --git a/tienda_ilusion/don_confiao/frontend/don-confiao/src/main.js b/tienda_ilusion/don_confiao/frontend/don-confiao/src/main.js index d31eee2..cab013c 100644 --- a/tienda_ilusion/don_confiao/frontend/don-confiao/src/main.js +++ b/tienda_ilusion/don_confiao/frontend/don-confiao/src/main.js @@ -9,11 +9,17 @@ import { registerPlugins } from '@/plugins' // Components import App from './App.vue' +import ApiImplementation from './services/api-implementation'; // Composables import { createApp } from 'vue' -const app = createApp(App) +process.env.API_IMPLEMENTATION = 'django'; +let apiImplementation = new ApiImplementation(); +const api = apiImplementation.getApi(); + +const app = createApp(App); +app.provide('api', api); registerPlugins(app) diff --git a/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api-implementation.js b/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api-implementation.js new file mode 100644 index 0000000..0bbbec6 --- /dev/null +++ b/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api-implementation.js @@ -0,0 +1,21 @@ +import DjangoApi from './django-api'; +import Api from './api'; + +class ApiImplementation { + constructor() { + const implementation = process.env.API_IMPLEMENTATION; + let apiImplementation; + if (implementation === 'django') { + apiImplementation = new DjangoApi(); + } else { + throw new Error("API implementation don't configured"); + } + this.api = new Api(apiImplementation); + } + + getApi() { + return this.api; + } +} + +export default ApiImplementation; diff --git a/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api.js b/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api.js new file mode 100644 index 0000000..d783b0b --- /dev/null +++ b/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/api.js @@ -0,0 +1,19 @@ +class Api { + constructor (apiImplementation) { + this.apiImplementation = apiImplementation; + } + + getCustomers() { + return this.apiImplementation.getCustomers(); + } + + getProducts() { + return this.apiImplementation.getProducts(); + } + + getPaymentMethods() { + return this.apiImplementation.getPaymentMethods(); + } +} + +export default Api; diff --git a/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/django-api.js b/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/django-api.js new file mode 100644 index 0000000..756bfcf --- /dev/null +++ b/tienda_ilusion/don_confiao/frontend/don-confiao/src/services/django-api.js @@ -0,0 +1,42 @@ +class DjangoApi { + getCustomers() { + return new Promise((resolve, reject) => { + fetch('/don_confiao/api/customers/') + .then(response => response.json()) + .then(data => { + resolve(data); + }) + .catch(error => { + reject(error); + }); + }); + } + + getProducts() { + return new Promise((resolve, reject) => { + fetch('/don_confiao/api/products/') + .then(response => response.json()) + .then(data => { + resolve(data); + }) + .catch(error => { + reject(error); + }); + }); + } + + getPaymentMethods() { + return new Promise((resolve, reject) => { + fetch('/don_confiao/payment_methods/all/select_format') + .then(response => response.json()) + .then(data => { + resolve(data); + }) + .catch(error => { + reject(error); + }); + }); + } +} + +export default DjangoApi;