Skip to content

Commit 785820d

Browse files
Merge pull request #54 from wednesday-solutions/fix/refactor
chore: refactor database and update readme
2 parents b3b22af + 35b27a8 commit 785820d

27 files changed

+65
-41
lines changed

README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,27 @@ Run the following command to begin seeding
117117

118118
Once you've to the server started check out the api documentation at [/api-docs](http://localhost:9000/api-docs)
119119

120+
## Navigating the code base
121+
122+
- The entry point of the application is the [server/index.js](./server/index.js)
123+
- The server/app.js imports the APIs from [server/api/index.js](./server/api/index.js)
124+
- All the different APIs in the [server/api](./server/api) are registered [here](./server/api/index.js)
125+
- MongoDB is used to store data & mongoose is used as the ORM
126+
- [mongo](./server/database/mongo.js)
127+
- [models](./server/database/models/)
128+
- The template has support for the following middlewares
129+
- [auth](./server/middlewares/auth/)
130+
- [injectRequestId](./server/middlewares/injectRequestId)
131+
- [rateLimiter](./server/middlewares/rateLimiter)
132+
- The template has inbuilt support for
133+
- [redis](./server/services/redis.js)
134+
- [circuitBreakers](./server/services/circuitBreaker.js)
135+
- [slack alerts](./server/utils/slackNotify.js)
136+
- [docker](./Dockerfile)
137+
- [docker-compose](./docker-compose.yml)
138+
- [auto generated apis](./server/api/requestGenerators.js)
139+
- [sharding of collections](./setup-shards)
140+
120141
## Philosophy
121142

122143
When using NoSQLs you are optimising for read performance. We're doing this by denormalising data. There are multiple copies of the same data. For example

__tests__/server/api/users/index.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import supertest from 'supertest';
22
import * as requests from 'api/requestGenerators';
3-
import Users from 'models/users';
3+
import Users from 'database/models/users';
44
import userValidator from 'api/users/validator';
55
import app from 'server';
66
import { createUser } from 'api/users';

__tests__/server/daos/order.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
totalAmtForDate,
77
totalByDateForCategory
88
} from 'daos/order';
9-
import { Orders } from 'models/orders';
9+
import { Orders } from 'database/models/orders';
1010
import { mockData } from 'utils/mockData';
1111
import moment from 'moment';
1212
const {

__tests__/server/middlewares/mongo.test.js renamed to __tests__/server/database/mongo.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import mongoose from 'mongoose';
22
import { getMongoUri } from 'utils/mongoConstants';
3-
import { mongoConnector } from 'middlewares/mongo';
3+
import { mongoConnector } from 'database/mongo';
44

55
jest.mock('mongoose', () => ({
66
connection: {

__tests__/server/middlewares/auth/ownershipBasedAccessControl.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as httpContext from 'express-http-context';
2-
import { Stores } from 'models/stores';
3-
import { Users } from 'models/users';
2+
import { Stores } from 'database/models/stores';
3+
import { Users } from 'database/models/users';
44
import message from 'utils/i18n/message';
55
import { ownershipBasedAccessControl } from 'middlewares/auth/ownershipBasedAccessControl';
66

nodemon.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"exec": "babel-node server/app.js | bunyan -o short",
2+
"exec": "babel-node server/index.js | bunyan -o short",
33
"watch": ["server/*"],
44
"ignore": ["**/__tests__/**", "*.test.js"],
55
"events": {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,10 @@
111111
"utils": "./server/utils",
112112
"middlewares": "./server/middlewares",
113113
"server": "./server",
114-
"models": "./server/models",
115114
"api": "./server/api",
116115
"config": "./config",
117116
"services": "./server/services",
117+
"database": "./server/database",
118118
"daos": "./server/daos"
119119
}
120120
}

seeders/index.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ const random = require('lodash/random');
33
const range = require('lodash/range');
44
const moment = require('moment');
55
const { runSeeders, connectToMongo, createProduct } = require('./utils');
6-
const { Orders } = require('models/orders');
7-
const { Products } = require('models/products');
8-
const { Stores } = require('models/stores');
9-
const { Suppliers } = require('models/suppliers');
10-
const { StoreProducts } = require('models/storeProducts');
11-
const { SupplierProducts } = require('models/supplierProducts');
6+
const { Orders } = require('database/models/orders');
7+
const { Products } = require('database/models/products');
8+
const { Stores } = require('database/models/stores');
9+
const { Suppliers } = require('database/models/suppliers');
10+
const { StoreProducts } = require('database/models/storeProducts');
11+
const { SupplierProducts } = require('database/models/supplierProducts');
1212

1313
const OCT_10_1994 = 782980686236;
1414

seeders/utils.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ const { default: faker } = require('@faker-js/faker');
22
const mongoose = require('mongoose');
33
const cluster = require('cluster');
44
const os = require('os');
5-
const { Products } = require('models/products');
6-
const { ReferencedOrders } = require('models/referencedOrders');
7-
const { UnshardedOrders } = require('models/unshardedOrders');
5+
const { Products } = require('database/models/products');
6+
const { ReferencedOrders } = require('database/models/referencedOrders');
7+
const { UnshardedOrders } = require('database/models/unshardedOrders');
88
const dotenv = require('dotenv');
99
const {
1010
UnshardedReferencedOrders
11-
} = require('models/unshardedReferencedOrders');
11+
} = require('database/models/unshardedReferencedOrders');
1212
const { getMongoUri } = require('utils/mongoConstants');
1313

1414
const totalCPUs = os.cpus().length;

server/api/index.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import path from 'path';
22
import express from 'express';
33
import kebab from 'lodash/kebabCase';
44
import { generateRequest } from 'api/requestGenerators';
5-
import { mongoConnector } from 'middlewares/mongo';
5+
import { mongoConnector } from '../database/mongo';
66
import { customApisMapper, REQUEST_TYPES } from 'api/customApisMapper';
77
import customRoutes from 'server/api/routes';
88
import { getModelFiles, isTestEnv } from 'utils';
@@ -21,7 +21,10 @@ export default app => {
2121
};
2222

2323
const autoGenerateApisFromModels = app => {
24-
const modelsFolderPath = path.join(__dirname, '../../server/models/');
24+
const modelsFolderPath = path.join(
25+
__dirname,
26+
'../../server/database/models/'
27+
);
2528
const fileArray = getModelFiles(modelsFolderPath);
2629
fileArray.forEach(f => {
2730
const { model } = require(modelsFolderPath + f);

0 commit comments

Comments
 (0)