initial server side setup
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
node_modules
|
||||||
|
|
||||||
|
.idea
|
||||||
2
Dockerfile
Normal file
2
Dockerfile
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
FROM postgres:11.3
|
||||||
|
CMD ["postgres"]
|
||||||
31
README.md
31
README.md
@@ -1,3 +1,32 @@
|
|||||||
# crm-integration
|
# crm-integration
|
||||||
|
|
||||||
Integrate and customize CRM and ERP used by SimaSpace
|
Integrate and customize CRM and ERP used by SimaSpace
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
|
||||||
|
1. Run setup script : `npm run setup`
|
||||||
|
This installs packages for server and client applications.
|
||||||
|
Then builds docker image for database and starts container.
|
||||||
|
Database name is `psychology`. Default username is `docker` and default password is `docker`.
|
||||||
|
|
||||||
|
If everything works correctly, it is possible to connect to database with :
|
||||||
|
`psql -d psychology -p 5432 -U docker -h localhost`
|
||||||
|
|
||||||
|
3. Start server : `npm run start-server`
|
||||||
|
|
||||||
|
4. Start client : `npm run start-client`
|
||||||
|
|
||||||
|
#### Useful NPM scripts
|
||||||
|
|
||||||
|
There are few scripts to handle some operations faster, without copy-pasting commands to terminal
|
||||||
|
|
||||||
|
1. Build docker container : `npm run docker-build`
|
||||||
|
If, for any reason, you need to build docker image, without running same image and migrations, use this script
|
||||||
|
|
||||||
|
2. Start docker container : `npm run docker-stop`
|
||||||
|
This script starts docker container if it is already built
|
||||||
|
|
||||||
|
3. Stop docker container : `npm run docker-start`
|
||||||
|
This script stops docker container
|
||||||
|
|
||||||
|
4. Execute migrations : `npm run migrate`
|
||||||
|
|||||||
15
config/config.json
Normal file
15
config/config.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"development": {
|
||||||
|
"username": "docker",
|
||||||
|
"password": "docker",
|
||||||
|
"database": "psychology",
|
||||||
|
"port": "5432",
|
||||||
|
"dialect": "postgres"
|
||||||
|
},
|
||||||
|
"test": {
|
||||||
|
"use_env_variable": "DATABASE_URL"
|
||||||
|
},
|
||||||
|
"production": {
|
||||||
|
"use_env_variable": "DATABASE_URL"
|
||||||
|
}
|
||||||
|
}
|
||||||
9
controllers/apiStatusCheck.js
Normal file
9
controllers/apiStatusCheck.js
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const apiStatusCheck = (req, res) => {
|
||||||
|
res.send({status: 1});
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
apiStatusCheck,
|
||||||
|
};
|
||||||
37
models/index.js
Normal file
37
models/index.js
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
const Sequelize = require('sequelize');
|
||||||
|
const basename = path.basename(__filename);
|
||||||
|
const env = process.env.NODE_ENV || 'development';
|
||||||
|
const config = require(__dirname + '/../config/config.json')[env];
|
||||||
|
const db = {};
|
||||||
|
|
||||||
|
let sequelize;
|
||||||
|
if (config.use_env_variable) {
|
||||||
|
sequelize = new Sequelize(process.env[config.use_env_variable], config);
|
||||||
|
} else {
|
||||||
|
sequelize = new Sequelize(config.database, config.username, config.password, config);
|
||||||
|
}
|
||||||
|
|
||||||
|
fs
|
||||||
|
.readdirSync(__dirname)
|
||||||
|
.filter(file => {
|
||||||
|
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
|
||||||
|
})
|
||||||
|
.forEach(file => {
|
||||||
|
const model = sequelize['import'](path.join(__dirname, file));
|
||||||
|
db[model.name] = model;
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.keys(db).forEach(modelName => {
|
||||||
|
if (db[modelName].associate) {
|
||||||
|
db[modelName].associate(db);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
db.sequelize = sequelize;
|
||||||
|
db.Sequelize = Sequelize;
|
||||||
|
|
||||||
|
module.exports = db;
|
||||||
3791
package-lock.json
generated
Normal file
3791
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
40
package.json
Normal file
40
package.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"name": "psychology",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Integrate and customize CRM and ERP used by SimaSpace",
|
||||||
|
"main": "server.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"install-server": "npm install",
|
||||||
|
"install-client": "cd client && yarn install",
|
||||||
|
"docker-build": "docker build -t psychology .",
|
||||||
|
"docker-start": "docker run -e POSTGRES_USER=docker -e POSTGRES_PASSWORD=docker -e POSTGRES_DB=psychology --name pg_psychology -d -p 5432:5432 psychology",
|
||||||
|
"docker-stop": "docker stop pg_psychology",
|
||||||
|
"setup": "npm run install-server && npm run install-client && npm run docker-build && npm run docker-start && npm run migrate",
|
||||||
|
"migrate": "npx sequelize db:migrate",
|
||||||
|
"start-server": "nodemon server.js",
|
||||||
|
"start-client": "cd client && yarn start"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+ssh://git@gitlab.com/saburly/psihologija.git"
|
||||||
|
},
|
||||||
|
"author": "Saburly",
|
||||||
|
"license": "ISC",
|
||||||
|
"engines": {
|
||||||
|
"node": "11.12.x"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://gitlab.com/saburly/psihologija/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://gitlab.com/saburly/psihologija#README",
|
||||||
|
"dependencies": {
|
||||||
|
"express": "^4.17.0",
|
||||||
|
"pg": "^7.11.0",
|
||||||
|
"sequelize": "^5.8.6",
|
||||||
|
"sequelize-cli": "^5.4.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"nodemon": "^1.19.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
10
routes/index.js
Normal file
10
routes/index.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const { apiStatusCheck } = require('../controllers/apiStatusCheck');
|
||||||
|
|
||||||
|
const express = require('express');
|
||||||
|
const router = express.Router();
|
||||||
|
|
||||||
|
router.get('/', apiStatusCheck);
|
||||||
|
|
||||||
|
module.exports = router;
|
||||||
Reference in New Issue
Block a user