Commit 60e58a54 by Beebuddy Builder

add mongodb

1 parent 72612251
......@@ -22,6 +22,8 @@
"author": "",
"license": "ISC",
"dependencies": {
"dotenv": "^8.2.0"
"dotenv": "^8.2.0",
"moment": "2.29.1",
"mongodb": "3.1.8"
}
}
......@@ -3,10 +3,12 @@
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ENV = exports.Utils = void 0;
exports.connectMongo = exports.ENV = exports.Utils = void 0;
var _dotenv = _interopRequireDefault(require("dotenv"));
var _connect_db = _interopRequireDefault(require("./utils/mongodb/connect_db"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
......@@ -45,4 +47,6 @@ exports.Utils = Utils;
var ENV = {
env: process.env
};
exports.ENV = ENV;
\ No newline at end of file
exports.ENV = ENV;
var connectMongo = new _connect_db.default();
exports.connectMongo = connectMongo;
\ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _moment = _interopRequireDefault(require("moment"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
var _default = {
log: function log() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var req = args[0];
if (_typeof(req) === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log("\x1B[0m".concat(getTime(), " INFO ").concat(toString(args).join(''), "\x1B[0m"));
},
info: function info() {
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
var req = args[0];
if (_typeof(req) === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log("\x1B[36m".concat(getTime(), " INFO ").concat(toString(args).join(''), "\x1B[0m"));
},
error: function error() {
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args[_key3] = arguments[_key3];
}
var req = args[0];
if (_typeof(req) === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log("\x1B[31m".concat(getTime(), " ERROR ").concat(toString(args).join(''), "\x1B[0m"));
},
warning: function warning() {
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
args[_key4] = arguments[_key4];
}
var req = args[0];
if (_typeof(req) === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log("\x1B[33m".concat(getTime(), " INFO ").concat(toString(args).join(''), "\x1B[0m"));
},
success: function success() {
for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
args[_key5] = arguments[_key5];
}
var req = args[0];
if (_typeof(req) === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log("\x1B[32m".concat(getTime(), " INFO ").concat(toString(args).join(''), "\x1B[0m"));
},
magenta: function magenta() {
for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
args[_key6] = arguments[_key6];
}
var req = args[0];
if (_typeof(req) === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log("\x1B[35m".concat(getTime(), " INFO ").concat(toString(args).join(''), "\x1B[0m"));
},
random: function random() {
for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
args[_key7] = arguments[_key7];
}
var req = args[0];
if (_typeof(req) === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log(toString(args).join('').split('').map(function (item) {
return '\x1b[' + randomColor() + 'm' + item + '\x1b[0m';
}).join('') + '\n');
},
db: function db() {
for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
args[_key8] = arguments[_key8];
}
var req = args[0];
if (_typeof(req) === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log("\x1B[35m".concat(getTime(), " INFO [Database Message] ").concat(toString(args).join(''), "\x1B[0m"));
}
/**
* Random color not duplicate next character
*/
};
exports.default = _default;
var tempColor = null;
var randomColor = function randomColor() {
if (tempColor != null) {
var rand = Math.floor(Math.random() * (37 - 31) + 31);
if (rand != tempColor) {
tempColor = rand;
return rand;
} else {
return randomColor();
}
} else {
tempColor = Math.floor(Math.random() * (37 - 31) + 31);
return tempColor;
}
};
var toString = function toString(list) {
return list.map(function (item) {
return item.constructor.name == 'Object' || item.constructor.name == 'Array' ? JSON.stringify(item) : item;
});
};
var getTime = function getTime() {
return (0, _moment.default)().format("YYYY-MM-DD HH:mm:ss:SSS");
};
\ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _default = {
DMA5_DMA_OBJECT: "dma5_dma_object",
DMA5_CONFIG: "dma5_config",
DMA5_BUILDER_ENV: "dma5_builder_env",
DMA5_PUBLISH_QUEUE: "dma5_publish_queue",
DMA5_CARD_PROTOTYPE: "dma5_card_prototype",
DMA_SCREEN: "app_ui_config",
DMA_STORYBOARD: "story_board_config",
DMA_STORYBOARD_LIST: "storyboard_storyboardlist",
DMA_STORYBOARD_GROUP: "storyboard_groups",
DMA_MASTER_NATIVE_INPUT: 'screen_native_input_type'
};
exports.default = _default;
\ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _collections = _interopRequireDefault(require("./collections"));
var dbActions = _interopRequireWildcard(require("./db_config/action"));
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var ConnectMongo = function ConnectMongo() {
_classCallCheck(this, ConnectMongo);
dbActions.openConnection();
};
var _default = ConnectMongo;
exports.default = _default;
\ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _app_config = _interopRequireDefault(require("../../../config/app_config"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Config Database
var DB_USERNAME = encodeURIComponent(_app_config.default.systemConfig.DB_USERNAME);
var DB_PASSWORD = encodeURIComponent(_app_config.default.systemConfig.DB_PASSWORD);
var DB_NAME = _app_config.default.systemConfig.DB_NAME;
var DB_PORT = _app_config.default.systemConfig.DB_PORT;
var DB_URL = _app_config.default.systemConfig.DB_URL;
var DB_CONNECT_STR = "mongodb://".concat(DB_USERNAME, ":").concat(DB_PASSWORD, "@").concat(DB_URL, ":").concat(DB_PORT, "/").concat(DB_NAME);
var _default = {
DB_CONNECT_STR: DB_CONNECT_STR,
DB_NAME: DB_NAME
};
exports.default = _default;
\ No newline at end of file
......@@ -22,6 +22,8 @@
"author": "",
"license": "ISC",
"dependencies": {
"dotenv": "^8.2.0"
"dotenv": "^8.2.0",
"moment": "2.29.1",
"mongodb": "3.1.8"
}
}
import dotenv from 'dotenv'
import ConnectMongo from './utils/mongodb/connect_db';
dotenv.config();
export class Utils {
......@@ -17,4 +18,6 @@ export class Utils {
export const ENV = {
env : process.env
}
\ No newline at end of file
}
export const connectMongo = new ConnectMongo();
\ No newline at end of file
import moment from "moment";
export default {
log: (...args) => {
const req = args[0];
if (typeof req === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log(`\x1b[0m${getTime()} INFO ${toString(args).join('')}\x1b[0m`)
},
info: (...args) => {
const req = args[0];
if (typeof req === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log(`\x1b[36m${getTime()} INFO ${toString(args).join('')}\x1b[0m`)
},
error: (...args) => {
const req = args[0];
if (typeof req === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log(`\x1b[31m${getTime()} ERROR ${toString(args).join('')}\x1b[0m`)
},
warning: (...args) => {
const req = args[0];
if (typeof req === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log(`\x1b[33m${getTime()} INFO ${toString(args).join('')}\x1b[0m`)
},
success: (...args) => {
const req = args[0];
if (typeof req === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log(`\x1b[32m${getTime()} INFO ${toString(args).join('')}\x1b[0m`)
},
magenta: (...args) => {
const req = args[0];
if (typeof req === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log(`\x1b[35m${getTime()} INFO ${toString(args).join('')}\x1b[0m`)
},
random: (...args) => {
const req = args[0];
if (typeof req === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log((toString(args).join('').split('').map(item => '\x1b[' + randomColor() + 'm' + item + '\x1b[0m')).join('') + '\n')
},
db: (...args) => {
const req = args[0];
if (typeof req === 'object' && req.hasOwnProperty("specialType")) {
args[0] = req.headers.__reqId;
}
console.log(`\x1b[35m${getTime()} INFO [Database Message] ${toString(args).join('')}\x1b[0m`)
},
}
/**
* Random color not duplicate next character
*/
let tempColor = null;
let randomColor = () => {
if (tempColor != null) {
const rand = Math.floor(Math.random() * (37 - 31) + 31);
if (rand != tempColor) {
tempColor = rand;
return rand;
} else {
return randomColor();
}
} else {
tempColor = Math.floor(Math.random() * (37 - 31) + 31);
return tempColor;
}
}
let toString = (list) => {
return list.map(item => item.constructor.name == 'Object' || item.constructor.name == 'Array' ? JSON.stringify(item) : item);
}
let getTime = () => moment().format("YYYY-MM-DD HH:mm:ss:SSS");
\ No newline at end of file
export default {
DMA5_DMA_OBJECT : "dma5_dma_object",
DMA5_CONFIG: "dma5_config",
DMA5_BUILDER_ENV: "dma5_builder_env",
DMA5_PUBLISH_QUEUE: "dma5_publish_queue",
DMA5_CARD_PROTOTYPE: "dma5_card_prototype",
DMA_SCREEN : "app_ui_config",
DMA_STORYBOARD : "story_board_config",
DMA_STORYBOARD_LIST : "storyboard_storyboardlist",
DMA_STORYBOARD_GROUP : "storyboard_groups",
DMA_MASTER_NATIVE_INPUT : 'screen_native_input_type'
}
\ No newline at end of file
import COLLECTION from "./collections";
import * as dbActions from "./db_config/action";
class ConnectMongo {
constructor(){
dbActions.openConnection();
}
}
export default ConnectMongo;
\ No newline at end of file
import { MongoClient, FilterQuery, UpdateQuery, FindAndModifyWriteOpResultObject, OptionalId, ClientSession ,DeleteWriteOpResultObject ,UpdateWriteOpResult} from 'mongodb';
import config from "./config_db";
import logger from "../../logger/logger";
import appConfig from "../../../config/app_config";
/**
* @type {MongoClient}
*/
var mongo = null;
const TAG = "[ConnectMongo] "
async function openConnection() {
try {
mongo = await MongoClient.connect(config.DB_CONNECT_STR, {
useNewUrlParser: true,
useUnifiedTopology: true,
poolSize: appConfig.config.db_connection_pool_size
});
logger.info(`${TAG}::::::::::::::: Mongo DB is connected ::::::::::::::::`);
} catch (error) {
logger.error(`${TAG}::::::::::::::: Cannot connect to Mongo DB ::::::::::::::::\n${error}`);
}
}
/**
* Select * From
* @param {String} collectionName
* @param {*} queryCondition
* @param {Object} filter
* @returns {Promise<Array>}
*/
async function find(collectionName, queryCondition = {}, filter = {}) {
try {
if (mongo === null || !mongo.isConnected()) await openConnection();
const dbo = mongo.db(config.DB_NAME);
const resultObject = await dbo.collection(collectionName)
.find(queryCondition, { projection: { ...filter } })
.toArray();
logger.db("Find data from " + collectionName + " Success.");
return resultObject;
} catch (error) {
// logger.error("Find data from " + collectionName + " Failed.");
// logger.error("Error : ", error);
throw error;
}
}
/**
* Select * From Where Only One Data
* @param {String} collectionName
* @param {*} queryCondition
*/
async function findOne(collectionName, queryCondition = {}) {
try {
if (mongo === null || !mongo.isConnected()) await openConnection();
const dbo = mongo.db(config.DB_NAME);
const resultObject = await dbo.collection(collectionName)
.findOne(queryCondition, { projection: { _id: 0 } })
logger.db("Find data from " + collectionName + " Success.");
return resultObject;
} catch (error) {
// logger.error("Find data from " + collectionName + " Failed.");
// logger.error("Error : ", error);
throw error;
}
}
/**
* Insert One Data
* @param {String} collectionName
* @param {OptionalId<Object>} data
* @param {ClientSession} session
*/
async function insertOne(collectionName, data = {}, session = undefined) {
try {
if (mongo === null || !mongo.isConnected()) await openConnection();
const dbo = mongo.db(config.DB_NAME);
const resultObject = await dbo.collection(collectionName).insertOne(data, {session});
logger.db("Insert data to " + collectionName + " Success.");
return resultObject;
} catch (error) {
// logger.error("Insert data to " + collectionName + " Failed.");
// logger.error("Error : ", error);
throw error;
}
}
/**
* Update Data
* @param {String} collectionName
* @param {FilterQuery<Object>} queryCondition
* @param {*} updateValue
* @param {ClientSession} session
* @return {UpdateWriteOpResult}
*/
async function updateOne(collectionName, queryCondition = {}, updateValue = {}, session = undefined) {
try {
if (mongo === null || !mongo.isConnected()) await openConnection();
const dbo = mongo.db(config.DB_NAME);
const resultObject = await dbo.collection(collectionName).updateOne(queryCondition, updateValue, {session});
logger.db("Update data to " + collectionName + " Success.");
return resultObject;
} catch (error) {
// logger.error("Update data to " + collectionName + " Failed.");
// logger.error("Error : ", error);
throw error;
}
}
/**
* Update Many Data
* @param {String} collectionName
* @param {*} queryCondition
* @param {*} updateValue
* @param {ClientSession} session
*/
async function updateMany(collectionName, queryCondition = {}, updateValue = {}, session = undefined) {
try {
if (mongo === null || !mongo.isConnected()) await openConnection();
const dbo = mongo.db(config.DB_NAME);
const resultObject = await dbo.collection(collectionName).updateMany(queryCondition, updateValue, {session});
logger.db("Update data to " + collectionName + " Success.");
return resultObject;
} catch (error) {
// logger.error("Update data to " + collectionName + " Failed.");
// logger.error("Error : ", error);
throw error;
}
}
/**
* Delete From
* @param {String} collectionName
* @param {*} queryCondition
* @param {ClientSession} session
* @return {DeleteWriteOpResultObject}
*/
async function deleteMany(collectionName, queryCondition, session = undefined) {
try {
if (mongo === null || !mongo.isConnected()) await openConnection();
const dbo = mongo.db(config.DB_NAME);
const resultObject = await dbo.collection(collectionName).deleteMany(queryCondition, {session});
logger.db("Delete data from " + collectionName + " Success.");
return resultObject;
} catch (error) {
// logger.error("Delete data from " + collectionName + " Failed.");
// logger.error("Error : ", error);
throw error;
}
}
/**
* @description Find a document and update it in one atomic operation. Requires a write lock for the duration of the operation.
* http://mongodb.github.io/node-mongodb-native/3.3/api/Collection.html#findOneAndUpdate
* @param {String} collectionName
* @param {FilterQuery<Object>} queryCondition
* @param {UpdateQuery<Object>} updateValue
* @param {ClientSession} session
*
* @returns {FindAndModifyWriteOpResultObject<Object>}
*/
async function findOneAndUpdate(collectionName, queryCondition = {}, updateValue = {}, session = undefined) {
try {
if (mongo === null || !mongo.isConnected()) await openConnection();
const dbo = mongo.db(config.DB_NAME);
const resultObject = await dbo.collection(collectionName).findOneAndUpdate(queryCondition, updateValue, {session})
logger.db("Update data to " + collectionName + " Success.");
return resultObject;
} catch (error) {
// logger.error("Update data to " + collectionName + " Failed.");
// logger.error("Error : ", error);
throw error;
}
}
/**
* Select * From
* @param {String} collectionName
* @param {Object[]} pipeline
*/
async function aggregate(collectionName, pipeline = {}) {
try {
if (mongo === null || !mongo.isConnected()) await openConnection();
const dbo = mongo.db(config.DB_NAME);
const resultObject = await dbo.collection(collectionName)
.aggregate(pipeline)
.toArray();
logger.db("Find data from " + collectionName + " Success.");
return resultObject;
} catch (error) {
// logger.error("Find data from " + collectionName + " Failed.");
// logger.error("Error : ", error);
throw error;
}
}
/**
* @returns {ClientSession}
*/
async function CreateSession() {
try {
if (mongo === null || !mongo.isConnected()) await openConnection();
const sessions = mongo.startSession({
defaultTransactionOptions: {
readConcern: { level: 'local' },
writeConcern: { w: 'majority' },
readPreference: 'primary'
}
});
return sessions
} catch (error) {
// logger.error("Find data from " + collectionName + " Failed.");
// logger.error("Error : ", error);
throw error;
}
}
export {
openConnection,
find,
findOne,
insertOne,
updateOne,
updateMany,
deleteMany,
findOneAndUpdate,
aggregate,
CreateSession
}
\ No newline at end of file
import appConfig from "../../../config/app_config";
// Config Database
const DB_USERNAME = encodeURIComponent(appConfig.systemConfig.DB_USERNAME);
const DB_PASSWORD = encodeURIComponent(appConfig.systemConfig.DB_PASSWORD);
const DB_NAME = appConfig.systemConfig.DB_NAME;
const DB_PORT = appConfig.systemConfig.DB_PORT;
const DB_URL = appConfig.systemConfig.DB_URL;
const DB_CONNECT_STR = `mongodb://${DB_USERNAME}:${DB_PASSWORD}@${DB_URL}:${DB_PORT}/${DB_NAME}`;
export default {
DB_CONNECT_STR : DB_CONNECT_STR,
DB_NAME : DB_NAME,
}
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!