From f1f79dafff29d5f4045c9d4cb74366fa198747b3 Mon Sep 17 00:00:00 2001 From: ireic Date: Sat, 11 Jan 2020 15:19:47 +0100 Subject: [PATCH] Fixed ports --- api/README.md | 30 ++++++++++++---------------- api/src/index.ts | 3 +-- client/server.js | 4 +--- client/src/shared/hooks/api/query.js | 16 +++++++-------- client/src/shared/utils/api.js | 2 +- 5 files changed, 23 insertions(+), 32 deletions(-) diff --git a/api/README.md b/api/README.md index 1c105a6..abef62a 100644 --- a/api/README.md +++ b/api/README.md @@ -1,25 +1,21 @@ -# Jira clone API built with Node/TypeScript +# Project structure The API codebase is fairly simple and should be easy enough to understand. -### Project structure -
- -| File or folder | Description | -| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `src/index.ts` | The entry file. This is where we setup middleware, attach routes, initialize database and express. | -| `src/routes.ts` | This is where we define all routes, both public and private. | -| `src/constants` | Constants are values that never change and are used in multiple places across the codebase. | -| `src/controllers` | Controllers listen to client's requests and work with entities and the database to fetch, add, update, or delete data. | -| `src/database` | Database related code and seeds go here. | -| `src/entities` | This is where we put TypeORM entities, you could think of them as models. We define columns, relations, validations for each database entity. | -| `src/errors` | This is where we define custom errors. The `catchErrors` function helps us avoid repetitive `try/catch` blocks within controllers. | -| `src/middleware` | Middleware functions can modify request and response objects, end the request-response cycle, etc. For example `authenticateUser` method verifies the authorization token and attaches `currentUser` to the request object. | -| `src/serializers` | Serializers transform the data fetched from the database before it's sent to the client. | -| `src/utils` | Utility(helper) functions that are used in multiple places across the codebase. For example `utils/typeorm.ts` functions help us validate data and avoid writing repetitive code. | - +| File or folder | Description | +| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `src/index.ts` | The entry file. This is where we setup middleware, attach routes, initialize database and express. | +| `src/routes.ts` | This is where we define all routes, both public and private. | +| `src/constants` | Constants are values that never change and are used in multiple places across the codebase. | +| `src/controllers` | Controllers listen to client's requests and work with entities and the database to fetch, add, update, or delete data. | +| `src/database` | Database related code and seeds go here. | +| `src/entities` | This is where we put TypeORM entities, you could think of them as models. We define columns, relations, validations for each database entity. | +| `src/errors` | This is where we define custom errors. The `catchErrors` function helps us avoid repetitive `try/catch` blocks within controllers. | +| `src/middleware` | Middleware functions can modify request and response objects, end the request-response cycle, etc. For example `authenticateUser` method verifies the authorization token and attaches `currentUser` to the request object. | +| `src/serializers` | Serializers transform the data fetched from the database before it's sent to the client. | +| `src/utils` | Utility(helper) functions that are used in multiple places across the codebase. For example `utils/typeorm.ts` functions help us validate data and avoid writing repetitive code. |
diff --git a/api/src/index.ts b/api/src/index.ts index b8ac2da..77f9f7b 100644 --- a/api/src/index.ts +++ b/api/src/index.ts @@ -22,7 +22,6 @@ const establishDatabaseConnection = async (): Promise => { const initializeExpress = (): void => { const app = express(); - const PORT = 3000; app.use(cors()); app.use(express.json()); @@ -39,7 +38,7 @@ const initializeExpress = (): void => { app.use((req, _res, next) => next(new RouteNotFoundError(req.originalUrl))); app.use(handleError); - app.listen(PORT, () => console.log(`App listening on port ${PORT}`)); + app.listen(process.env.PORT || 3000); }; const initializeApp = async (): Promise => { diff --git a/client/server.js b/client/server.js index 7ab591a..38a24aa 100644 --- a/client/server.js +++ b/client/server.js @@ -2,8 +2,6 @@ const express = require('express'); const fallback = require('express-history-api-fallback'); const compression = require('compression'); -const PORT = process.env.$PORT || process.env.PORT || 8080; - const app = express(); app.use(compression()); @@ -12,4 +10,4 @@ app.use(express.static(`${__dirname}/build`)); app.use(fallback(`${__dirname}/build/index.html`)); -app.listen(PORT); +app.listen(process.env.PORT || 8080); diff --git a/client/src/shared/hooks/api/query.js b/client/src/shared/hooks/api/query.js index 23cf1e4..ee077d0 100644 --- a/client/src/shared/hooks/api/query.js +++ b/client/src/shared/hooks/api/query.js @@ -23,10 +23,12 @@ const useQuery = (url, propsVariables = {}, options = {}) => { }); const makeRequest = useCallback( - (newVariables, { skipLoading } = {}) => { + newVariables => { const variables = { ...state.variables, ...(newVariables || {}) }; const apiVariables = { ...propsVariablesMemoized, ...variables }; + const skipLoading = canUseCache && cachePolicy === 'cache-first'; + if (!skipLoading) { mergeState({ isLoading: true, variables }); } else if (newVariables) { @@ -53,20 +55,16 @@ const useQuery = (url, propsVariables = {}, options = {}) => { if (isSleeping) return; if (canUseCache && cachePolicy === 'cache-only') return; - makeRequest( - {}, - { - skipLoading: canUseCache && cachePolicy === 'cache-first', - }, - ); + makeRequest(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [makeRequest]); const setLocalData = useCallback( getUpdatedData => mergeState(({ data }) => { - cache[url] = { ...(cache[url] || {}), data: getUpdatedData(data) }; - return { data: getUpdatedData(data) }; + const updatedData = getUpdatedData(data); + cache[url] = { ...(cache[url] || {}), data: updatedData }; + return { data: updatedData }; }), [mergeState, url], ); diff --git a/client/src/shared/utils/api.js b/client/src/shared/utils/api.js index 551cf70..6caf768 100644 --- a/client/src/shared/utils/api.js +++ b/client/src/shared/utils/api.js @@ -6,7 +6,7 @@ import { objectToQueryString } from 'shared/utils/url'; import { getStoredAuthToken, removeStoredAuthToken } from 'shared/utils/authToken'; const defaults = { - baseURL: 'http://localhost:3000', + baseURL: `http://localhost:${process.env.PORT || 3000}`, headers: () => ({ 'Content-Type': 'application/json', Authorization: getStoredAuthToken() ? `Bearer ${getStoredAuthToken()}` : undefined,