From ac32a232e91808dd638005bfc580219f429e385c Mon Sep 17 00:00:00 2001 From: saeid_01 Date: Wed, 10 Jul 2019 00:38:40 +0430 Subject: [PATCH] change structure apis --- package-lock.json | 25 ++++++++++++++++--- package.json | 5 +--- public/mix-manifest.json | 8 +++--- resources/js/Global/mixins/api.js | 10 +++----- resources/js/Global/utils/api/apiHandler.js | 7 ------ resources/js/Global/utils/api/config/axios.js | 18 ------------- .../js/Global/utils/api/factory/apiFactory.js | 7 ------ resources/js/Global/utils/api/init/apollo.js | 7 ++++++ .../api/{config/apollo.js => init/axios.js} | 0 .../{factory/apollo => request}/apolloApi.js | 8 +++--- .../{factory/axios => request}/axiosApi.js | 9 ++++--- 11 files changed, 46 insertions(+), 58 deletions(-) delete mode 100644 resources/js/Global/utils/api/apiHandler.js delete mode 100644 resources/js/Global/utils/api/config/axios.js delete mode 100644 resources/js/Global/utils/api/factory/apiFactory.js create mode 100644 resources/js/Global/utils/api/init/apollo.js rename resources/js/Global/utils/api/{config/apollo.js => init/axios.js} (100%) rename resources/js/Global/utils/api/{factory/apollo => request}/apolloApi.js (80%) rename resources/js/Global/utils/api/{factory/axios => request}/axiosApi.js (87%) diff --git a/package-lock.json b/package-lock.json index 3c04128..e180783 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1299,6 +1299,22 @@ "normalize-path": "2.1.1" } }, + "apollo-boost": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.4.3.tgz", + "integrity": "sha512-XE7hx4aXRnyZ4OGM8I7DjYq9SYLYWrVBoYpEFsv0GBtfIl6tipyks2Yo2/TEWKw7mhGmi1eFB2F3pbhIZbzKuQ==", + "requires": { + "apollo-cache": "1.3.2", + "apollo-cache-inmemory": "1.6.2", + "apollo-client": "2.6.3", + "apollo-link": "1.2.12", + "apollo-link-error": "1.1.11", + "apollo-link-http": "1.5.15", + "graphql-tag": "2.10.1", + "ts-invariant": "0.4.4", + "tslib": "1.9.3" + } + }, "apollo-cache": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.2.tgz", @@ -1346,12 +1362,13 @@ "zen-observable-ts": "0.8.19" } }, - "apollo-link-context": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/apollo-link-context/-/apollo-link-context-1.0.18.tgz", - "integrity": "sha512-aG5cbUp1zqOHHQjAJXG7n/izeMQ6LApd/whEF5z6qZp5ATvcyfSNkCfy3KRJMMZZ3iNfVTs6jF+IUA8Zvf+zeg==", + "apollo-link-error": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.11.tgz", + "integrity": "sha512-442DNqn3CNRikDaenMMkoDmCRmkoUx/XyUMlRTZBEFdTw3FYPQLsmDO3hzzC4doY5/BHcn9/jdYh9EeLx4HPsA==", "requires": { "apollo-link": "1.2.12", + "apollo-link-http-common": "0.2.14", "tslib": "1.9.3" } }, diff --git a/package.json b/package.json index 8930cd2..179063e 100644 --- a/package.json +++ b/package.json @@ -12,11 +12,8 @@ "dependencies": { "@fortawesome/fontawesome-free": "^5.5.0", "ajv": "^6.10.0", + "apollo-boost": "^0.4.3", "apollo-cache-inmemory": "^1.6.2", - "apollo-client": "^2.6.3", - "apollo-link": "^1.2.12", - "apollo-link-context": "^1.0.18", - "apollo-link-http": "^1.5.15", "axios": "^0.18.0", "bootstrap": "^4.1.3", "bootstrap-select": "^1.13.3", diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 171ee50..a26e248 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,6 +1,6 @@ { - "/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=e11c94b631fa8e23411d", - "/js/vue/Home/app.js": "/js/vue/Home/app.js?id=8a41fb4476589b3a6cff", - "/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=26118082661767a7bdc6", - "/js/vue/User/app.js": "/js/vue/User/app.js?id=4d34a4ac917830fbaa36" + "/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=ada36e14123738cce4a1", + "/js/vue/Home/app.js": "/js/vue/Home/app.js?id=4389447314d810908e49", + "/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=24bffeddf17eab24a833", + "/js/vue/User/app.js": "/js/vue/User/app.js?id=32e40e7920eba25a4bb2" } diff --git a/resources/js/Global/mixins/api.js b/resources/js/Global/mixins/api.js index 0082ff1..079c2ef 100644 --- a/resources/js/Global/mixins/api.js +++ b/resources/js/Global/mixins/api.js @@ -1,6 +1,5 @@ -import axiosApi from '@Global/utils/api/factory/axios/axiosApi' -import apolloApi from '@Global/utils/api/factory/apollo/apolloApi' -import apiHandler from '@Global/utils/api/apiHandler' +import axiosApi from '@Global/utils/api/request/axiosApi' +import apolloApi from '@Global/utils/api/request/apolloApi' export const api = (url) => { let apiClass; @@ -11,9 +10,8 @@ export const api = (url) => { } else { throw 'parameter "' + url['type'] + '" must be axios or apollo.'; } - - let APIHandler = new apiHandler(); - return APIHandler.request(apiClass); + + return apiClass.init(); } export default { diff --git a/resources/js/Global/utils/api/apiHandler.js b/resources/js/Global/utils/api/apiHandler.js deleted file mode 100644 index 321f3ab..0000000 --- a/resources/js/Global/utils/api/apiHandler.js +++ /dev/null @@ -1,7 +0,0 @@ -export default class apiHandler { - - request(apiMethod) { - return apiMethod.Handle(); - } - -} \ No newline at end of file diff --git a/resources/js/Global/utils/api/config/axios.js b/resources/js/Global/utils/api/config/axios.js deleted file mode 100644 index b96509b..0000000 --- a/resources/js/Global/utils/api/config/axios.js +++ /dev/null @@ -1,18 +0,0 @@ -import { ApolloClient } from 'apollo-client' -import { HttpLink } from 'apollo-link-http' -import { InMemoryCache } from 'apollo-cache-inmemory' -import VueApollo from 'vue-apollo' - -const httpLink = new HttpLink({ - // URL to graphql server, you should use an absolute URL here - uri: '/graphql' -}) - -// create the apollo client -const apolloClient = new ApolloClient({ - link: httpLink, - cache: new InMemoryCache() -}) - -// install the vue plugin -Vue.use(VueApollo) \ No newline at end of file diff --git a/resources/js/Global/utils/api/factory/apiFactory.js b/resources/js/Global/utils/api/factory/apiFactory.js deleted file mode 100644 index cc99373..0000000 --- a/resources/js/Global/utils/api/factory/apiFactory.js +++ /dev/null @@ -1,7 +0,0 @@ -export default class apiFactory { - - Handle() { - return this.init(); - } - -} \ No newline at end of file diff --git a/resources/js/Global/utils/api/init/apollo.js b/resources/js/Global/utils/api/init/apollo.js new file mode 100644 index 0000000..fff3d63 --- /dev/null +++ b/resources/js/Global/utils/api/init/apollo.js @@ -0,0 +1,7 @@ +import ApolloClient from 'apollo-boost' +import { InMemoryCache } from "apollo-cache-inmemory"; + +export default new ApolloClient({ + uri: '/graphql', + cache: new InMemoryCache() +}); \ No newline at end of file diff --git a/resources/js/Global/utils/api/config/apollo.js b/resources/js/Global/utils/api/init/axios.js similarity index 100% rename from resources/js/Global/utils/api/config/apollo.js rename to resources/js/Global/utils/api/init/axios.js diff --git a/resources/js/Global/utils/api/factory/apollo/apolloApi.js b/resources/js/Global/utils/api/request/apolloApi.js similarity index 80% rename from resources/js/Global/utils/api/factory/apollo/apolloApi.js rename to resources/js/Global/utils/api/request/apolloApi.js index ef4a3c7..ab148ff 100644 --- a/resources/js/Global/utils/api/factory/apollo/apolloApi.js +++ b/resources/js/Global/utils/api/request/apolloApi.js @@ -1,9 +1,8 @@ -import apiFactory from "../apiFactory"; +import apollo from "@Global/utils/api/init/apollo"; -export default class apolloApi extends apiFactory { +export default class apolloApi { constructor(urlObj) { - super(); this.staticMethods = ["query", "mutations"]; this.method = urlObj.method; @@ -23,7 +22,8 @@ export default class apolloApi extends apiFactory { query() { const query = this.gql; - const variables = this.variables; + const variables = this.variables; + return apollo.query({ query, variables diff --git a/resources/js/Global/utils/api/factory/axios/axiosApi.js b/resources/js/Global/utils/api/request/axiosApi.js similarity index 87% rename from resources/js/Global/utils/api/factory/axios/axiosApi.js rename to resources/js/Global/utils/api/request/axiosApi.js index ed4e961..72369a6 100644 --- a/resources/js/Global/utils/api/factory/axios/axiosApi.js +++ b/resources/js/Global/utils/api/request/axiosApi.js @@ -1,18 +1,19 @@ -import apiFactory from "../apiFactory"; import axios from "axios"; -export default class axiosApi extends apiFactory { +export default class axiosApi { constructor(urlObj) { - super(); this.staticMethods = ["get", "post", "put", "delete"]; - + this.baseURL = '/'; + this.method = urlObj.method; this.url = urlObj.url; this.data = urlObj.data; } init() { + axios.defaults.baseURL = this.baseURL; + if (this.checkMethod()) { return this[this.method](); }