@krishnapawar/kp-mysql-models
Advanced tools
Comparing version 1.2.0 to 1.2.1
1128
lib/index.js
@@ -1,1 +0,1127 @@ | ||
var pool,database_name,port,host;function setBDConnection(e){return e&&e.config&&e.config.connectionConfig&&e.config.connectionConfig.database&&e.config.connectionConfig.host&&e.config.connectionConfig.port?(database_name=(pool=e).config.connectionConfig.database,host=pool.config.connectionConfig.host,port=pool.config.connectionConfig.port,!!pool&&!!database_name&&!!host&&!!port||(console.error("kp-mysql-models is not connect database.Please Check You Database Connection!"),!1)):(console.error("kp-mysql-models is not connect database.Please Check You Database Connection!"),!1)}const dbQuery=e=>new Promise((t,n)=>{if(sqlConnect(pool))return n(sqlConnect(pool));pool.query(e,function(e,i,o){return e?n(e):t(i)})}),get=e=>new Promise((t,n)=>{if(sqlConnect(pool))return n(sqlConnect(pool));if(isTable(e.table))return n(isTable(e.table));let i=[];pool.query(`SELECT ${selectOption(e)} FROM ${e.table} ${whereClause(e)} ${isLatest(e)} ${isLimit(e)} ${pagination(e)}`,async(o,l)=>{if(o)return n(o);if(void 0!=e&&(!isCheck(e.pagination)||e.pagination>=0))pool.query(`SELECT count(*) as totalData FROM ${e.table} ${whereClause(e)} ${isLatest(e)}`,async(o,a)=>{if(o)return n(o);let s=paginationData(a[0].totalData,e);for(let r of l){let c=await withdataForGet(n,r,e);i.push(c)}return t({resw:i,paginate:s})});else{for(let a of l){let s=await withdataForGet(n,a,e);i.push(s)}return t(i)}})}),first=e=>new Promise((t,n)=>sqlConnect(pool)?n(sqlConnect(pool)):isTable(e.table)?n(isTable(e.table)):void pool.query(`SELECT ${selectOption(e)} FROM ${e.table} ${whereClause(e)} ${isLatest(e)} ${isLimit(e,1)}`,(i,o)=>i?n(i):o.length>0?withdata(n,t,o[0],e):t({}))),dbJoin=e=>new Promise((t,n)=>{if(sqlConnect(pool))return n(sqlConnect(pool));pool.query(`SELECT ${selectOption(e)} FROM ${e.table} ${joinTable(e.join)} ${whereClause(e)} ${isLatest(e)} ${isLimit(e)} ${pagination(e)}`,(i,o)=>i?n(i):void 0==e||isCheck(e.pagination)&&!(e.pagination>=0)?t(o):void pool.query(`SELECT count(*) as totalData FROM ${e.table} ${joinTable(e.join)} ${whereClause(e)} ${isLatest(e)}`,(i,l)=>{if(i)return n(i);let a=paginationData(l[0].totalData,e);return t({res:o,paginate:a})}))}),dbWith=e=>new Promise((t,n)=>{if(sqlConnect(pool))return n(sqlConnect(pool));pool.query(`SELECT ${selectOption(e)} FROM ${e.table} ${withTable(e.with)} ${whereClause(e)} ${isLatest(e)} ${isLimit(e)} ${pagination(e)}`,(i,o)=>i?n(i):void 0==e||isCheck(e.pagination)&&!(e.pagination>=0)?t(o):void pool.query(`SELECT count(*) as totalData FROM ${e.table} ${withTable(e.with)} ${whereClause(e)} ${isLatest(e)}`,(i,l)=>{if(i)return n(i);let a=paginationData(l[0].totalData,e);return t({res:o,paginate:a})}))}),create=e=>new Promise((t,n)=>{if(sqlConnect(pool))return n(sqlConnect(pool));if(isTable(e.table))return n(isTable(e.table));if(void 0==e.elements||null==e.elements)return t(!0);{let i=Object.keys(e.elements).toString(),o=Object.values(e.elements).toString();pool.query(`INSERT INTO ${e.table} (${i}) VALUES (${o})`,(e,i)=>e?n(e):t(i))}}),save=e=>new Promise((t,n)=>{if(sqlConnect(pool))return n(sqlConnect(pool));if(isTable(e.table))return n(isTable(e.table));if(void 0==e.elements||null==e.elements)return t(!0);if(void 0!=whereClause(e)&&null!=whereClause(e)&&""!=whereClause(e))var i=`UPDATE ${e.table} ${getKeyValue(e.elements,"SET")} ${whereClause(e)}`;else var i=`INSERT INTO ${e.table} ${getKeyValue(e.elements,"SET")}`;pool.query(i,(e,i)=>e?n(e):t(i))}),update=e=>isTable(e.table)?reject(isTable(e.table)):new Promise(async(t,n)=>{if(sqlConnect(pool))return n(sqlConnect(pool));if(void 0==e.elements||null==e.elements)return t(!0);var i=`UPDATE ${e.table} ${getKeyValue(e.elements,"SET")} ${whereClause(e)}`;pool.query(i,(e,i)=>e?n(e):t(i))}),destroy=e=>isTable(e.table)?reject(isTable(e.table)):new Promise((t,n)=>{if(sqlConnect(pool))return n(sqlConnect(pool));void 0!=e.where&&pool.query(`DELETE FROM ${e.table} ${whereClause(e)}`,(e,i)=>e?n(e):t(i))}),deleleAll=e=>isTable(e.table)?reject(isTable(e.table)):new Promise((t,n)=>{if(sqlConnect(pool))return n(sqlConnect(pool));pool.query(`DELETE FROM ${e.table} ${whereClause(e)}`,(e,i)=>e?n(e):t(i))}),trunCate=e=>isTable(e.table)?reject(isTable(e.table)):new Promise((t,n)=>{if(sqlConnect(pool))return n(sqlConnect(pool));pool.query(`TRUNCATE TABLE ${e.table}`,(e,i)=>e?n(e):t(i))}),getKeyValue=(e,t="WHERE")=>{if(isCheck(e))return"";let n=[];for(let[i,o]of Object.entries(e))n.push(`${i}='${o}'`);return" "+t+" "+n.toString()},selectOption=e=>void 0!=e&&void 0!=e.select&&null!=e.select&&""!=e.select&&e.select.length>0?e.select.toString():"*",isTable=e=>(void 0==e||null==e||""==e)&&"Table name is missing!",isLimit=(e,t="")=>isCheck(e)||isCheck(e.limit)?"":void 0!=e.limit&&null!=e.limit&&""!=e.limit&&"number"==typeof e.limit&&e.limit>0?""!=t&&e.limit<2?`LIMIT ${t}`:`LIMIT ${e.limit}`:""!=t?`LIMIT ${t}`:"",isLatest=e=>isCheck(e)||isCheck(e.limit)?"":void 0!=e.limit&&null!=e.limit&&""!=e.limit?`order by ${e.limit} DESC`:"",isCheck=e=>void 0==e||null==e||""==e,isKey=e=>void 0!=e&&(null==e||""==e),whereAnd=e=>{if(isCheck(e))return"";let t=[];for(let[n,i]of Object.entries(e))t.length>0?t.push(` AND ${n}='${i}'`):t.push(`${n}='${i}'`);return`${t.toString()}`},whereOr=e=>{if(isCheck(e))return"";let t=[];for(let[n,i]of Object.entries(e))t.length>0?t.push(` OR ${n}='${i}'`):t.push(`${n}='${i}'`);return`${t.toString()}`},whereIs=e=>{if(isCheck(e))return"";let t=[];for(let[n,i]of Object.entries(e))t.length>0?t.push(` AND ${n} IS ${i}`):t.push(`${n} IS ${i}`);return`${t.toString()}`},whereIn=e=>{if(isCheck(e))return"";let t=[];for(let[n,i]of Object.entries(e))t.length>0?t.push(` AND ${n} IN (${i.toString()})`):t.push(`${n} IN (${i.toString()})`);return` ${t.toString()}`},whereNotIn=e=>{if(isCheck(e))return"";let t=[];for(let[n,i]of Object.entries(e))t.length>0?t.push(` AND ${n} NOT IN (${i.toString()})`):t.push(`${n} NOT IN (${i.toString()})`);return`${t.toString()}`},whereRaw=e=>isCheck(e)?"":`${e}`,whereClause=(e,t)=>{if(isCheck(e))return"";let n="",i=whereNotIn(e.whereNotIn).replace(/,/g,"");""!=i&&(n+=i);let o=whereIn(e.whereIn);""!=o&&""!=i?n+=` AND ${o}`:""!=o&&(n+=o);let l=whereAnd(e.where).replace(/,/g,"");""!=l&&(""!=o||""!=i)?n+=` AND ${l}`:""!=l&&(n+=l);let a=whereOr(e.whereOr).replace(/,/g,"");""!=a&&(""!=l||""!=o||""!=i)?n+=` OR ${a}`:""!=a&&(n+=a);let s=whereIs(e.whereIs).replace(/,/g,"");""!=s&&(""!=a||""!=l||""!=o||""!=i)?n+=` AND ${s}`:""!=s&&(n+=s);let r=whereRaw(e.whereRaw),c=connect(e.connect,t);return""!=c&&(""!=s||""!=a||""!=l||""!=o||""!=i)?n+=` AND ${c}`:""!=c&&(n+=c),""!=r&&(""!=c||""!=s||""!=a||""!=l||""!=o||""!=i)?n+=` AND ${r}`:""!=r&&(n+=r),""!=n?`WHERE ${n.trim()}`:""},onAnd=e=>{if(isCheck(e))return"";let t=[];for(let[n,i]of Object.entries(e))t.length>0?t.push(` AND ${n}=${i}`):t.push(`${n}=${i}`);return`${t.toString()}`},onOr=e=>{if(isCheck(e))return"";let t=[];for(let[n,i]of Object.entries(e))t.length>0?t.push(` OR ${n}='${i}'`):t.push(`${n}=${i}`);return`${t.toString()}`},onIs=e=>{if(isCheck(e))return"";let t=[];for(let[n,i]of Object.entries(e))t.length>0?t.push(` AND ${n} IS ${i}`):t.push(`${n} IS ${i}`);return`${t.toString()}`},onIn=e=>{if(isCheck(e))return"";let t=[];for(let[n,i]of Object.entries(e))t.length>0?t.push(` AND ${n} IN (${i.toString()})`):t.push(`${n} IN (${i.toString()})`);return` ${t.toString()}`},onNotIn=e=>{if(isCheck(e))return"";let t=[];for(let[n,i]of Object.entries(e))t.length>0?t.push(` AND ${n} NOT IN (${i.toString()})`):t.push(`${n} NOT IN (${i.toString()})`);return`${t.toString()}`},onRaw=e=>isCheck(e)?"":`${e}`,onClause=e=>{let t="",n=onNotIn(e.onNotIn).replace(/,/g,"");""!=n&&(t+=n);let i=onIn(e.onIn);""!=i&&""!=n?t+=` AND ${i}`:""!=i&&(t+=i);let o=onAnd(e.on).replace(/,/g,"");""!=o&&(""!=i||""!=n)?t+=` AND ${o}`:""!=o&&(t+=o);let l=onOr(e.onOr).replace(/,/g,"");""!=l&&(""!=o||""!=i||""!=n)?t+=` OR ${l}`:""!=l&&(t+=l);let a=onIs(e.onIs).replace(/,/g,"");""!=a&&(""!=l||""!=o||""!=i||""!=n)?t+=` AND ${a}`:""!=a&&(t+=a);let s=onRaw(e.onRaw);return""!=s&&(""!=a||""!=l||""!=o||""!=i||""!=n)?t+=` AND ${s}`:""!=s&&(t+=s),""!=t?`ON ${t.trim()}`:""},pagination=e=>isCheck(e)||isCheck(e.pagination)||e.pagination==NaN||""==isLimit(e)||isCheck(e.pagination)&&0==isLimit(e)?"":`OFFSET ${parseInt(e.pagination)*parseInt(e)}`,paginationData=(e,t,n=0)=>{if(isCheck(e)&&t.pagination<0)return"";let i=e>0&&e>t?e/t:0,o=0==isInt(i)?i:i-isInt(i)+1,l=t.pagination,a=[];for(let s=0;s<o;s++)a.push(s);return{pageCount:o,currentPage:l,pagelenth:a,totalData:e}},joinTable=e=>{if(void 0!==e&&isCheck(e)&&e.length<=0)return"";let t=" ";for(let n of e){if(isTable(n.table))return"";void 0!=n.type&&null!=n.type&&""!=joinType(n.type)?t+=` ${joinType(n.type)} ${n.table} ${onClause(n)}`:t+=` JOIN ${n.table} ${onClause(n)}`}return t},withTable=e=>{if(void 0!==e&&isCheck(e)&&e.length<=0)return"";let t=" ";for(let n in e)if(Object.hasOwnProperty.call(e,n))for(let i of(e[n],e[n])){if(isTable(i.table))return"";void 0!=n&&null!=n&&""!=joinType(n)?t+=` ${joinType(n)} ${i.table} ${onClause(i)}`:t+=` JOIN ${i.table} ${onClause(i)}`}return t},withdata=(e,t,n,i)=>{if(isCheck(i)||void 0!==i.with&&isCheck(i.with)&&i.with.length<=0)return t(n);let o=0;for(let l in i.with)o++;let a=0;for(let s in i.with){console.log(s);let r=i.with[s];pool.query(`SELECT ${selectOption(r)} FROM ${r.table} ${whereClause(r,n)} ${isLatest(r)} ${isLimit(r)} ${pagination(r)}`,(i,l)=>i?e(i):(void 0!=r&&(!isCheck(r.pagination)||r.pagination>=0)?pool.query(`SELECT count(*) as totalData FROM ${r.table} ${whereClause(r,n)} ${isLatest(r)}`,(t,i)=>{if(t)return e(t);let o=paginationData(i[0].totalData,r);n[s]={res:l,paginate:o}}):n[s]=l,++a===o)?t(n):void 0)}if(a===o)return t(n)},withdataForGet=(e,t,n)=>new Promise((i,o)=>{if(isCheck(n)||void 0!==n.with&&isCheck(n.with)&&n.with.length<=0)return i(t);let l=0;for(let a in n.with)l++;let s=0;for(let r in n.with){console.log(r);let c=n.with[r];pool.query(`SELECT ${selectOption(c)} FROM ${c.table} ${whereClause(c,t)} ${isLatest(c)} ${isLimit(c)} ${pagination(c)}`,(n,o)=>n?e(n):(void 0!=c&&(!isCheck(c.pagination)||c.pagination>=0)?pool.query(`SELECT count(*) as totalData FROM ${c.table} ${whereClause(c,t)} ${isLatest(c)}`,(n,i)=>{if(n)return e(n);let l=paginationData(i[0].totalData,c);t[r]={res:o,paginate:l}}):t[r]=o,++s===l)?i(t):void 0)}if(s===l)return i(t)}),connect=(e,t)=>{if(isCheck(e))return"";let n="";for(let i in e){let o=isCheck(t[i])?t[e[i]]:t[i],l=isCheck(t[i])?i:e[i];""===n?n+=`${l} = ${o} `:n+=`AND ${l} = ${o}`}return console.log(n),n},joinType=e=>{let t="";return("belongsTo"==e||"INNER JOIN"==e||"inner join"==e)&&(t="INNER JOIN"),("hasOne"==e||"JOIN"==e||"join"==e)&&(t="JOIN"),("belongsToMany"==e||"LEFT JOIN"==e||"left join"==e)&&(t="LEFT JOIN"),("hasMany"==e||"RIGHT JOIN"==e||"right join"==e)&&(t="RIGHT JOIN"),t},isInt=e=>e%1,sqlConnect=e=>{if(null==e||""===e)return"kp-mysql-models is not connect database.Please Check You Database Connection!";e.getConnection((e,t)=>{if(e)return console.log(e.message),"kp-mysql-models is not connect database.Please Check You Database Connection!"})};class BaseModels{constructor(){this._table="",this._connection=""}get(e){return new Promise((t,n)=>{if(sqlConnect(this._connection))return n(sqlConnect(this._connection));if(isTable(this._table))return n(isTable(this._table));let i=[];this._connection.query(`SELECT ${selectOption(e)} FROM ${this._table} ${whereClause(e)} ${isLatest(e)} ${isLimit(e)} ${pagination(e)}`,async(o,l)=>{if(o)return n(o);if(void 0!=e&&(!isCheck(e.pagination)||e.pagination>=0))this._connection.query(`SELECT count(*) as totalData FROM ${this._table} ${whereClause(e)} ${isLatest(e)}`,async(o,a)=>{if(o)return n(o);let s=paginationData(a[0].totalData,e);for(let r of l){let c=await withdataForGet(n,r,e);i.push(c)}return t({resw:i,paginate:s})});else{for(let a of l){let s=await withdataForGet(n,a,e);i.push(s)}return t(i)}})})}first(e){return new Promise((t,n)=>sqlConnect(this._connection)?n(sqlConnect(this._connection)):isTable(this._table)?n(isTable(this._table)):void this._connection.query(`SELECT ${selectOption(e)} FROM ${this._table} ${whereClause(e)} ${isLatest(e)} ${isLimit(e,1)}`,(i,o)=>i?n(i):o.length>0?withdata(n,t,o[0],e):t({})))}dbQuery(e){return new Promise((t,n)=>{if(sqlConnect(this._connection))return n(sqlConnect(this._connection));this._connection.query(e,function(e,i,o){return e?n(e):t(i)})})}dbJoin(e){return new Promise((t,n)=>{if(sqlConnect(this._connection))return n(sqlConnect(this._connection));this._connection.query(`SELECT ${selectOption(e)} FROM ${this._table} ${joinTable(e.join)} ${whereClause(e)} ${isLatest(e)} ${isLimit(e)} ${pagination(e)}`,(i,o)=>i?n(i):void 0==e||isCheck(e.pagination)&&!(e.pagination>=0)?t(o):void this._connection.query(`SELECT count(*) as totalData FROM ${this._table} ${joinTable(e.join)} ${whereClause(e)} ${isLatest(e)}`,(i,l)=>{if(i)return n(i);let a=paginationData(l[0].totalData,e);return t({res:o,paginate:a})}))})}dbWith(e){return new Promise((t,n)=>{if(sqlConnect(this._connection))return n(sqlConnect(this._connection));this._connection.query(`SELECT ${selectOption(e)} FROM ${this._table} ${withTable(e.with)} ${whereClause(e)} ${isLatest(e)} ${isLimit(e)} ${pagination(e)}`,(i,o)=>i?n(i):void 0==e||isCheck(e.pagination)&&!(e.pagination>=0)?t(o):void this._connection.query(`SELECT count(*) as totalData FROM ${this._table} ${withTable(e.with)} ${whereClause(e)} ${isLatest(e)}`,(i,l)=>{if(i)return n(i);let a=paginationData(l[0].totalData,e);return t({res:o,paginate:a})}))})}create(e){return new Promise((t,n)=>{if(sqlConnect(this._connection))return n(sqlConnect(this._connection));if(isTable(this._table))return n(isTable(this._table));if(void 0==e.elements||null==e.elements)return t(!0);{let i=Object.keys(e.elements).toString(),o=Object.values(e.elements).toString();this._connection.query(`INSERT INTO ${this._table} (${i}) VALUES (${o})`,(e,i)=>e?n(e):t(i))}})}save(e){return new Promise((t,n)=>{if(sqlConnect(this._connection))return n(sqlConnect(this._connection));if(isTable(this._table))return n(isTable(this._table));if(void 0==e.elements||null==e.elements)return t(!0);if(void 0!=whereClause(e)&&null!=whereClause(e)&&""!=whereClause(e))var i=`UPDATE ${this._table} ${getKeyValue(e.elements,"SET")} ${whereClause(e)}`;else var i=`INSERT INTO ${this._table} ${getKeyValue(e.elements,"SET")}`;this._connection.query(i,(e,i)=>e?n(e):t(i))})}update(e){return isTable(this._table)?reject(isTable(this._table)):new Promise(async(t,n)=>{if(sqlConnect(this._connection))return n(sqlConnect(this._connection));if(void 0==e.elements||null==e.elements)return t(!0);var i=`UPDATE ${this._table} ${getKeyValue(e.elements,"SET")} ${whereClause(e)}`;this._connection.query(i,(e,i)=>e?n(e):t(i))})}destroy(e){return isTable(this._table)?reject(isTable(this._table)):new Promise((t,n)=>{if(sqlConnect(this._connection))return n(sqlConnect(this._connection));void 0!=e.where&&this._connection.query(`DELETE FROM ${this._table} ${whereClause(e)}`,(e,i)=>e?n(e):t(i))})}deleleAll(e){return isTable(this._table)?reject(isTable(this._table)):new Promise((t,n)=>{if(sqlConnect(this._connection))return n(sqlConnect(this._connection));this._connection.query(`DELETE FROM ${this._table} ${whereClause(e)}`,(e,i)=>e?n(e):t(i))})}trunCate(e){return isTable(this._table)?reject(isTable(this._table)):new Promise((e,t)=>{if(sqlConnect(this._connection))return t(sqlConnect(this._connection));this._connection.query(`TRUNCATE TABLE ${this._table}`,(n,i)=>n?t(n):e(i))})}}module.exports={BaseModels,setBDConnection,get,first,dbQuery,trunCate,deleleAll,destroy,create,update,save,dbJoin,dbWith}; | ||
var pool; | ||
var database_name; | ||
var port; | ||
var host; | ||
function setBDConnection(db) { | ||
if (!db) { | ||
console.error("kp-mysql-models is not connect database.Please Check You Database Connection!"); | ||
return false; | ||
} | ||
if (!db.config) { | ||
console.error("kp-mysql-models is not connect database.Please Check You Database Connection!"); | ||
return false; | ||
} | ||
if (!db.config.connectionConfig) { | ||
console.error("kp-mysql-models is not connect database.Please Check You Database Connection!"); | ||
return false; | ||
} | ||
if (!db.config.connectionConfig.database) { | ||
console.error("kp-mysql-models is not connect database.Please Check You Database Connection!"); | ||
return false; | ||
} | ||
if (!db.config.connectionConfig.host) { | ||
console.error("kp-mysql-models is not connect database.Please Check You Database Connection!"); | ||
return false; | ||
} | ||
if (!db.config.connectionConfig.port) { | ||
console.error("kp-mysql-models is not connect database.Please Check You Database Connection!"); | ||
return false; | ||
} | ||
pool = db; | ||
database_name = pool.config.connectionConfig.database; | ||
host = pool.config.connectionConfig.host; | ||
port = pool.config.connectionConfig.port; | ||
if (!pool || !database_name || !host || !port) { | ||
console.error("kp-mysql-models is not connect database.Please Check You Database Connection!"); | ||
return false; | ||
} | ||
return true; | ||
} | ||
const dbQuery = (sql) => { | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(pool)) { | ||
return reject(sqlConnect(pool)); | ||
} | ||
pool.query(sql, function (error, results, fields) { | ||
if (error) return reject(error); | ||
return resolve(results); | ||
}); | ||
}); | ||
}; | ||
const get = (data) => { | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(pool)) { | ||
return reject(sqlConnect(pool)); | ||
} | ||
if (isTable(data.table)) return reject(isTable(data.table)); | ||
let resw = []; | ||
pool.query( | ||
`SELECT ${selectOption(data)} FROM ${data.table} ${whereClause( | ||
data | ||
)} ${isLatest(data)} ${isLimit(data)} ${pagination(data)}`, | ||
async (err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
if (data!= undefined && (!isCheck(data.pagination) || data.pagination >= 0)) { | ||
pool.query( | ||
`SELECT count(*) as totalData FROM ${data.table} ${whereClause( | ||
data | ||
)} ${isLatest(data)}`, | ||
async (err, resp) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
let paginate = paginationData(resp[0].totalData, data); | ||
for (const iterator of res) { | ||
const item = await withdataForGet(reject, iterator, data); | ||
resw.push(item); | ||
} | ||
return resolve({ resw, paginate }); | ||
} | ||
); | ||
} else { | ||
for (const iterator of res) { | ||
const item = await withdataForGet(reject, iterator, data); | ||
resw.push(item); | ||
} | ||
return resolve(resw); | ||
} | ||
} | ||
); | ||
}); | ||
}; | ||
//get singal data | ||
const first = (data) => { | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(pool)) { | ||
return reject(sqlConnect(pool)); | ||
} | ||
if (isTable(data.table)) return reject(isTable(data.table)); | ||
pool.query( | ||
`SELECT ${selectOption(data)} FROM ${data.table} ${whereClause( | ||
data | ||
)} ${isLatest(data)} ${isLimit(data, 1)}`, | ||
(err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
if (res.length > 0) { | ||
return withdata(reject, resolve, res[0], data); | ||
} | ||
return resolve({}); | ||
} | ||
); | ||
}); | ||
}; | ||
const dbJoin = (data) => { | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(pool)) { | ||
return reject(sqlConnect(pool)); | ||
} | ||
pool.query( | ||
`SELECT ${selectOption(data)} FROM ${data.table} ${joinTable( | ||
data.join | ||
)} ${whereClause(data)} ${isLatest(data)} ${isLimit( | ||
data | ||
)} ${pagination(data)}`, | ||
(err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
if (data!= undefined && (!isCheck(data.pagination) || data.pagination >= 0)) { | ||
pool.query( | ||
`SELECT count(*) as totalData FROM ${data.table} ${joinTable( | ||
data.join | ||
)} ${whereClause(data)} ${isLatest(data)}`, | ||
(err, resp) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
let paginate = paginationData(resp[0].totalData, data); | ||
return resolve({ res, paginate }); | ||
} | ||
); | ||
} else { | ||
return resolve(res); | ||
} | ||
} | ||
); | ||
}); | ||
}; | ||
const dbWith = (data) => { | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(pool)) { | ||
return reject(sqlConnect(pool)); | ||
} | ||
pool.query( | ||
`SELECT ${selectOption(data)} FROM ${data.table} ${withTable( | ||
data.with | ||
)} ${whereClause(data)} ${isLatest(data)} ${isLimit( | ||
data | ||
)} ${pagination(data)}`, | ||
(err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
if (data!= undefined && (!isCheck(data.pagination) || data.pagination >= 0)) { | ||
pool.query( | ||
`SELECT count(*) as totalData FROM ${data.table} ${withTable( | ||
data.with | ||
)} ${whereClause(data)} ${isLatest(data)}`, | ||
(err, resp) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
let paginate = paginationData(resp[0].totalData, data); | ||
return resolve({ res, paginate }); | ||
} | ||
); | ||
} else { | ||
return resolve(res); | ||
} | ||
} | ||
); | ||
}); | ||
}; | ||
const create = (data) => { | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(pool)) { | ||
return reject(sqlConnect(pool)); | ||
} | ||
if (isTable(data.table)) return reject(isTable(data.table)); | ||
if (data.elements != undefined && data.elements != null) { | ||
let keys = Object.keys(data.elements).toString(); | ||
let values = Object.values(data.elements).toString(); | ||
pool.query( | ||
`INSERT INTO ${data.table} (${keys}) VALUES (${values})`, | ||
(err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
return resolve(res); | ||
} | ||
); | ||
} else { | ||
return resolve(true); | ||
} | ||
}); | ||
}; | ||
const save = (data) => { | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(pool)) { | ||
return reject(sqlConnect(pool)); | ||
} | ||
if (isTable(data.table)) return reject(isTable(data.table)); | ||
if (data.elements != undefined && data.elements != null) { | ||
if ( | ||
whereClause(data) != undefined && | ||
whereClause(data) != null && | ||
whereClause(data) != "" | ||
) { | ||
var sqlQuery = `UPDATE ${data.table} ${getKeyValue( | ||
data.elements, | ||
"SET" | ||
)} ${whereClause(data)}`; | ||
} else { | ||
var sqlQuery = `INSERT INTO ${data.table} ${getKeyValue( | ||
data.elements, | ||
"SET" | ||
)}`; | ||
} | ||
pool.query(sqlQuery, (err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
return resolve(res); | ||
}); | ||
} else { | ||
return resolve(true); | ||
} | ||
}); | ||
}; | ||
const update = (data) => { | ||
if (isTable(data.table)) return reject(isTable(data.table)); | ||
return new Promise(async (resolve, reject) => { | ||
if (sqlConnect(pool)) { | ||
return reject(sqlConnect(pool)); | ||
} | ||
if (data.elements != undefined && data.elements != null) { | ||
var sqlQuery = `UPDATE ${data.table} ${getKeyValue( | ||
data.elements, | ||
"SET" | ||
)} ${whereClause(data)}`; | ||
pool.query(sqlQuery, (err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
return resolve(res); | ||
}); | ||
} else { | ||
return resolve(true); | ||
} | ||
}); | ||
}; | ||
const destroy = (data) => { | ||
if (isTable(data.table)) return reject(isTable(data.table)); | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(pool)) { | ||
return reject(sqlConnect(pool)); | ||
} | ||
if (data.where != undefined) { | ||
pool.query( | ||
`DELETE FROM ${data.table} ${whereClause(data)}`, | ||
(err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
return resolve(res); | ||
} | ||
); | ||
} | ||
}); | ||
}; | ||
const deleleAll = (data) => { | ||
if (isTable(data.table)) return reject(isTable(data.table)); | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(pool)) { | ||
return reject(sqlConnect(pool)); | ||
} | ||
pool.query(`DELETE FROM ${data.table} ${whereClause(data)}`, (err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
return resolve(res); | ||
}); | ||
}); | ||
}; | ||
const trunCate = (data) => { | ||
if (isTable(data.table)) return reject(isTable(data.table)); | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(pool)) { | ||
return reject(sqlConnect(pool)); | ||
} | ||
pool.query(`TRUNCATE TABLE ${data.table}`, (err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
return resolve(res); | ||
}); | ||
}); | ||
}; | ||
//end | ||
const getKeyValue = (data, setType = "WHERE") => { | ||
if (isCheck(data)) return ""; | ||
let setItem = []; | ||
for (const [key, value] of Object.entries(data)) { | ||
setItem.push(`${key}='${value}'`); | ||
} | ||
return " " + setType + " " + setItem.toString(); | ||
}; | ||
const selectOption = (data) => { | ||
if (data != undefined && data.select != undefined && data.select != null && data.select != "" && data.select.length > 0) | ||
return data.select.toString(); | ||
return "*"; | ||
}; | ||
const isTable = (data) => { | ||
if (data != undefined && data != null && data != "") return false; | ||
return "Table name is missing!"; | ||
}; | ||
const isLimit = (data, count = "") => { | ||
if (isCheck(data)) return ""; | ||
if (isCheck(data.limit)) return ""; | ||
if ( | ||
data.limit != undefined && | ||
data.limit != null && | ||
data.limit != "" && | ||
typeof data.limit == "number" && | ||
data.limit > 0 | ||
) { | ||
if (count != "" && data.limit < 2) return `LIMIT ${count}`; | ||
return `LIMIT ${data.limit}`; | ||
} | ||
if (count != "") return `LIMIT ${count}`; | ||
return ""; | ||
}; | ||
const isLatest = (data) => { | ||
if (isCheck(data)) return ""; | ||
if (isCheck(data.limit)) return ""; | ||
if (data.limit != undefined && data.limit != null && data.limit != "") | ||
return `order by ${data.limit} DESC`; | ||
return ""; | ||
}; | ||
const isCheck = (data) => { | ||
if (data != undefined && data != null && data != "") return false; | ||
return true; | ||
}; | ||
const isKey = (data) => { | ||
if (data != undefined && (data == null || data == "")) return true; | ||
return false; | ||
}; | ||
//where clause condition | ||
const whereAnd = (data) => { | ||
if (isCheck(data)) return ""; | ||
let setItem = []; | ||
for (const [key, value] of Object.entries(data)) { | ||
if (setItem.length > 0) { | ||
setItem.push(` AND ${key}='${value}'`); | ||
} else { | ||
setItem.push(`${key}='${value}'`); | ||
} | ||
} | ||
return `${setItem.toString()}`; | ||
}; | ||
const whereOr = (data) => { | ||
if (isCheck(data)) return ""; | ||
let setItem = []; | ||
for (const [key, value] of Object.entries(data)) { | ||
if (setItem.length > 0) { | ||
setItem.push(` OR ${key}='${value}'`); | ||
} else { | ||
setItem.push(`${key}='${value}'`); | ||
} | ||
} | ||
return `${setItem.toString()}`; | ||
}; | ||
const whereIs = (data) => { | ||
if (isCheck(data)) return ""; | ||
let setItem = []; | ||
for (const [key, value] of Object.entries(data)) { | ||
if (setItem.length > 0) { | ||
setItem.push(` AND ${key} IS ${value}`); | ||
} else { | ||
setItem.push(`${key} IS ${value}`); | ||
} | ||
} | ||
return `${setItem.toString()}`; | ||
}; | ||
const whereIn = (data) => { | ||
if (isCheck(data)) return ""; | ||
let setItem = []; | ||
for (const [key, value] of Object.entries(data)) { | ||
if (setItem.length > 0) { | ||
setItem.push(` AND ${key} IN (${value.toString()})`); | ||
} else { | ||
setItem.push(`${key} IN (${value.toString()})`); | ||
} | ||
} | ||
return ` ${setItem.toString()}`; | ||
}; | ||
const whereNotIn = (data) => { | ||
if (isCheck(data)) return ""; | ||
let setItem = []; | ||
for (const [key, value] of Object.entries(data)) { | ||
if (setItem.length > 0) { | ||
setItem.push(` AND ${key} NOT IN (${value.toString()})`); | ||
} else { | ||
setItem.push(`${key} NOT IN (${value.toString()})`); | ||
} | ||
} | ||
return `${setItem.toString()}`; | ||
}; | ||
const whereRaw = (data) => { | ||
if (isCheck(data)) return ""; | ||
return `${data}`; | ||
}; | ||
const whereClause = (data, resData) => { | ||
if (isCheck(data)) return ""; | ||
let addCondition = ""; | ||
const where_not_in = whereNotIn(data.whereNotIn).replace(/,/g, ""); | ||
if (where_not_in != "") addCondition += where_not_in; | ||
const where_in = whereIn(data.whereIn); | ||
if (where_in != "" && where_not_in != "") { | ||
addCondition += ` AND ${where_in}`; | ||
} else if (where_in != "") { | ||
addCondition += where_in; | ||
} | ||
const where_and = whereAnd(data.where).replace(/,/g, ""); | ||
if (where_and != "" && (where_in != "" || where_not_in != "")) { | ||
addCondition += ` AND ${where_and}`; | ||
} else if (where_and != "") { | ||
addCondition += where_and; | ||
} | ||
const where_or = whereOr(data.whereOr).replace(/,/g, ""); | ||
if ( | ||
where_or != "" && | ||
(where_and != "" || where_in != "" || where_not_in != "") | ||
) { | ||
addCondition += ` OR ${where_or}`; | ||
} else if (where_or != "") { | ||
addCondition += where_or; | ||
} | ||
const where_is = whereIs(data.whereIs).replace(/,/g, ""); | ||
if ( | ||
where_is != "" && | ||
(where_or != "" || where_and != "" || where_in != "" || where_not_in != "") | ||
) { | ||
addCondition += ` AND ${where_is}`; | ||
} else if (where_is != "") { | ||
addCondition += where_is; | ||
} | ||
const where_row = whereRaw(data.whereRaw); | ||
const connect_tb = connect(data.connect, resData); | ||
if ( | ||
connect_tb != "" && | ||
(where_is != "" || | ||
where_or != "" || | ||
where_and != "" || | ||
where_in != "" || | ||
where_not_in != "") | ||
) { | ||
addCondition += ` AND ${connect_tb}`; | ||
} else if (connect_tb != "") { | ||
addCondition += connect_tb; | ||
} | ||
if ( | ||
where_row != "" && | ||
(connect_tb != "" || | ||
where_is != "" || | ||
where_or != "" || | ||
where_and != "" || | ||
where_in != "" || | ||
where_not_in != "") | ||
) { | ||
addCondition += ` AND ${where_row}`; | ||
} else if (where_row != "") { | ||
addCondition += where_row; | ||
} | ||
return addCondition != "" ? `WHERE ${addCondition.trim()}` : ""; | ||
}; | ||
// on clause condition | ||
const onAnd = (data) => { | ||
if (isCheck(data)) return ""; | ||
let setItem = []; | ||
for (const [key, value] of Object.entries(data)) { | ||
if (setItem.length > 0) { | ||
setItem.push(` AND ${key}=${value}`); | ||
} else { | ||
setItem.push(`${key}=${value}`); | ||
} | ||
} | ||
return `${setItem.toString()}`; | ||
}; | ||
const onOr = (data) => { | ||
if (isCheck(data)) return ""; | ||
let setItem = []; | ||
for (const [key, value] of Object.entries(data)) { | ||
if (setItem.length > 0) { | ||
setItem.push(` OR ${key}='${value}'`); | ||
} else { | ||
setItem.push(`${key}=${value}`); | ||
} | ||
} | ||
return `${setItem.toString()}`; | ||
}; | ||
const onIs = (data) => { | ||
if (isCheck(data)) return ""; | ||
let setItem = []; | ||
for (const [key, value] of Object.entries(data)) { | ||
if (setItem.length > 0) { | ||
setItem.push(` AND ${key} IS ${value}`); | ||
} else { | ||
setItem.push(`${key} IS ${value}`); | ||
} | ||
} | ||
return `${setItem.toString()}`; | ||
}; | ||
const onIn = (data) => { | ||
if (isCheck(data)) return ""; | ||
let setItem = []; | ||
for (const [key, value] of Object.entries(data)) { | ||
if (setItem.length > 0) { | ||
setItem.push(` AND ${key} IN (${value.toString()})`); | ||
} else { | ||
setItem.push(`${key} IN (${value.toString()})`); | ||
} | ||
} | ||
return ` ${setItem.toString()}`; | ||
}; | ||
const onNotIn = (data) => { | ||
if (isCheck(data)) return ""; | ||
let setItem = []; | ||
for (const [key, value] of Object.entries(data)) { | ||
if (setItem.length > 0) { | ||
setItem.push(` AND ${key} NOT IN (${value.toString()})`); | ||
} else { | ||
setItem.push(`${key} NOT IN (${value.toString()})`); | ||
} | ||
} | ||
return `${setItem.toString()}`; | ||
}; | ||
const onRaw = (data) => { | ||
if (isCheck(data)) return ""; | ||
return `${data}`; | ||
}; | ||
const onClause = (data) => { | ||
let addCondition = ""; | ||
const on_not_in = onNotIn(data.onNotIn).replace(/,/g, ""); | ||
if (on_not_in != "") addCondition += on_not_in; | ||
const on_in = onIn(data.onIn); | ||
if (on_in != "" && on_not_in != "") { | ||
addCondition += ` AND ${on_in}`; | ||
} else if (on_in != "") { | ||
addCondition += on_in; | ||
} | ||
const on_and = onAnd(data.on).replace(/,/g, ""); | ||
if (on_and != "" && (on_in != "" || on_not_in != "")) { | ||
addCondition += ` AND ${on_and}`; | ||
} else if (on_and != "") { | ||
addCondition += on_and; | ||
} | ||
const on_or = onOr(data.onOr).replace(/,/g, ""); | ||
if (on_or != "" && (on_and != "" || on_in != "" || on_not_in != "")) { | ||
addCondition += ` OR ${on_or}`; | ||
} else if (on_or != "") { | ||
addCondition += on_or; | ||
} | ||
const on_is = onIs(data.onIs).replace(/,/g, ""); | ||
if ( | ||
on_is != "" && | ||
(on_or != "" || on_and != "" || on_in != "" || on_not_in != "") | ||
) { | ||
addCondition += ` AND ${on_is}`; | ||
} else if (on_is != "") { | ||
addCondition += on_is; | ||
} | ||
const on_row = onRaw(data.onRaw); | ||
if ( | ||
on_row != "" && | ||
(on_is != "" || | ||
on_or != "" || | ||
on_and != "" || | ||
on_in != "" || | ||
on_not_in != "") | ||
) { | ||
addCondition += ` AND ${on_row}`; | ||
} else if (on_row != "") { | ||
addCondition += on_row; | ||
} | ||
return addCondition != "" ? `ON ${addCondition.trim()}` : ""; | ||
}; | ||
//end on | ||
const pagination = (data) => { | ||
if (isCheck(data)) return ""; | ||
if (isCheck(data.pagination) || data.pagination == NaN) return ""; | ||
if ( | ||
isLimit(data) == "" || | ||
(isCheck(data.pagination) && isLimit(data) == 0) | ||
) | ||
return ""; | ||
return `OFFSET ${parseInt(data.pagination) * parseInt(data)}`; | ||
}; | ||
const paginationData = (totalData, data, page = 0) => { | ||
if (isCheck(totalData) && data.pagination < 0) return ""; | ||
let pageCountExce = | ||
totalData > 0 && totalData > data ? totalData / data : 0; | ||
let pageCount = | ||
isInt(pageCountExce) == 0 | ||
? pageCountExce | ||
: pageCountExce - isInt(pageCountExce) + 1; | ||
let currentPage = data.pagination; | ||
let pagelenth = []; | ||
for (let index = 0; index < pageCount; index++) { | ||
pagelenth.push(index); | ||
} | ||
return { pageCount, currentPage, pagelenth, totalData }; | ||
}; | ||
const joinTable = (data) => { | ||
if (data !== undefined && isCheck(data) && data.length <= 0) return ""; | ||
let str = " "; | ||
for (const join of data) { | ||
if (isTable(join.table)) return ""; | ||
if ( | ||
join.type != undefined && | ||
join.type != null && | ||
joinType(join.type) != "" | ||
) { | ||
str += ` ${joinType(join.type)} ${join.table} ${onClause(join)}`; | ||
} else { | ||
str += ` JOIN ${join.table} ${onClause(join)}`; | ||
} | ||
} | ||
return str; | ||
}; | ||
const withTable = (data) => { | ||
if (data !== undefined && isCheck(data) && data.length <= 0) return ""; | ||
let str = " "; | ||
for (const key in data) { | ||
if (Object.hasOwnProperty.call(data, key)) { | ||
const element = data[key]; | ||
for (const join of data[key]) { | ||
if (isTable(join.table)) return ""; | ||
if (key != undefined && key != null && joinType(key) != "") { | ||
str += ` ${joinType(key)} ${join.table} ${onClause(join)}`; | ||
} else { | ||
str += ` JOIN ${join.table} ${onClause(join)}`; | ||
} | ||
} | ||
} | ||
} | ||
return str; | ||
}; | ||
const withdata = (errThrow, result, resData, datas) => { | ||
if(isCheck(datas)) return result(resData); | ||
if (datas.with !== undefined && isCheck(datas.with) && datas.with.length <= 0) | ||
return result(resData); | ||
let totalKeyCount = 0; | ||
for (const _ in datas.with) { | ||
totalKeyCount++; | ||
} | ||
let keyIndex = 0; | ||
for (const key in datas.with) { | ||
console.log(key); | ||
let data = datas.with[key]; | ||
pool.query( | ||
`SELECT ${selectOption(data)} FROM ${data.table} ${whereClause( | ||
data, | ||
resData | ||
)} ${isLatest(data)} ${isLimit(data)} ${pagination(data)}`, | ||
(err, res) => { | ||
if (err) { | ||
return errThrow(err); | ||
} | ||
if (data!= undefined && (!isCheck(data.pagination) || data.pagination >= 0)) { | ||
pool.query( | ||
`SELECT count(*) as totalData FROM ${data.table} ${whereClause( | ||
data, | ||
resData | ||
)} ${isLatest(data)}`, | ||
(err, resp) => { | ||
if (err) { | ||
return errThrow(err); | ||
} | ||
let paginate = paginationData(resp[0].totalData, data); | ||
resData[key] = { res, paginate }; | ||
} | ||
); | ||
} else { | ||
resData[key] = res; | ||
} | ||
keyIndex++; | ||
if (keyIndex === totalKeyCount) { | ||
return result(resData); | ||
} | ||
} | ||
); | ||
} | ||
if (keyIndex === totalKeyCount) { | ||
return result(resData); | ||
} | ||
}; | ||
const withdataForGet = (errThrow, resData, datas) => { | ||
return new Promise((resolve, reject) => { | ||
if(isCheck(datas)) return resolve(resData); | ||
if (datas.with !== undefined && isCheck(datas.with) && datas.with.length <= 0) | ||
return resolve(resData); | ||
let totalKeyCount = 0; | ||
for (const _ in datas.with) { | ||
totalKeyCount++; | ||
} | ||
let keyIndex = 0; | ||
for (const key in datas.with) { | ||
console.log(key); | ||
let data = datas.with[key]; | ||
pool.query( | ||
`SELECT ${selectOption(data)} FROM ${data.table} ${whereClause( | ||
data, | ||
resData | ||
)} ${isLatest(data)} ${isLimit(data)} ${pagination(data)}`, | ||
(err, res) => { | ||
if (err) { | ||
return errThrow(err); | ||
} | ||
if (data!= undefined && (!isCheck(data.pagination) || data.pagination >= 0)) { | ||
pool.query( | ||
`SELECT count(*) as totalData FROM ${data.table} ${whereClause( | ||
data, | ||
resData | ||
)} ${isLatest(data)}`, | ||
(err, resp) => { | ||
if (err) { | ||
return errThrow(err); | ||
} | ||
let paginate = paginationData(resp[0].totalData, data); | ||
resData[key] = { res, paginate }; | ||
} | ||
); | ||
} else { | ||
resData[key] = res; | ||
} | ||
keyIndex++; | ||
if (keyIndex === totalKeyCount) { | ||
return resolve(resData); | ||
} | ||
} | ||
); | ||
} | ||
if (keyIndex === totalKeyCount) { | ||
return resolve(resData); | ||
} | ||
}); | ||
}; | ||
const connect = (tbcon, resdata) => { | ||
if (isCheck(tbcon)) return ""; | ||
let str = ""; | ||
for (const key in tbcon) { | ||
let baseColunm = isCheck(resdata[key]) ? resdata[tbcon[key]] : resdata[key]; | ||
let colunm = isCheck(resdata[key]) ? key : tbcon[key]; | ||
if (str === "") { | ||
str += `${colunm} = ${baseColunm} `; | ||
} else { | ||
str += `AND ${colunm} = ${baseColunm}`; | ||
} | ||
} | ||
console.log(str); | ||
return str; | ||
}; | ||
const joinType = (data) => { | ||
let send = ""; | ||
if (data == "belongsTo" || data == "INNER JOIN" || data == "inner join") { | ||
send = "INNER JOIN"; | ||
} | ||
if (data == "hasOne" || data == "JOIN" || data == "join") { | ||
send = "JOIN"; | ||
} | ||
if (data == "belongsToMany" || data == "LEFT JOIN" || data == "left join") { | ||
send = "LEFT JOIN"; | ||
} | ||
if (data == "hasMany" || data == "RIGHT JOIN" || data == "right join") { | ||
send = "RIGHT JOIN"; | ||
} | ||
return send; | ||
}; | ||
const isInt = (data) => { | ||
return data % 1; | ||
}; | ||
const sqlConnect = (pool) => { | ||
if (pool !== undefined && pool !== null && pool !== "") { | ||
pool.getConnection((err, connection) => { | ||
if (err) { | ||
console.log(err.message); | ||
return "kp-mysql-models is not connect database.Please Check You Database Connection!"; | ||
} | ||
}); | ||
} else { | ||
return "kp-mysql-models is not connect database.Please Check You Database Connection!"; | ||
} | ||
}; | ||
class BaseModels { | ||
constructor(){ | ||
this._table=""; | ||
this._connection=""; | ||
} | ||
//start | ||
get(data){ | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(this._connection)) { | ||
return reject(sqlConnect(this._connection)); | ||
} | ||
if (isTable(this._table)) return reject(isTable(this._table)); | ||
let resw = []; | ||
this._connection.query( | ||
`SELECT ${selectOption(data)} FROM ${this._table} ${whereClause( | ||
data | ||
)} ${isLatest(data)} ${isLimit(data)} ${pagination(data)}`, | ||
async (err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
if (data!= undefined && (!isCheck(data.pagination) || data.pagination >= 0)) { | ||
this._connection.query( | ||
`SELECT count(*) as totalData FROM ${this._table} ${whereClause( | ||
data | ||
)} ${isLatest(data)}`, | ||
async (err, resp) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
let paginate = paginationData(resp[0].totalData, data); | ||
for (const iterator of res) { | ||
const item = await withdataForGet(reject, iterator, data); | ||
resw.push(item); | ||
} | ||
return resolve({ resw, paginate }); | ||
} | ||
); | ||
} else { | ||
for (const iterator of res) { | ||
const item = await withdataForGet(reject, iterator, data); | ||
resw.push(item); | ||
} | ||
return resolve(resw); | ||
} | ||
} | ||
); | ||
}); | ||
}; | ||
//start | ||
first(data){ | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(this._connection)) { | ||
return reject(sqlConnect(this._connection)); | ||
} | ||
if (isTable(this._table)) return reject(isTable(this._table)); | ||
this._connection.query( | ||
`SELECT ${selectOption(data)} FROM ${this._table} ${whereClause( | ||
data | ||
)} ${isLatest(data)} ${isLimit(data, 1)}`, | ||
(err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
if (res.length > 0) { | ||
return withdata(reject, resolve, res[0], data); | ||
} | ||
return resolve({}); | ||
} | ||
); | ||
}); | ||
}; | ||
//start | ||
dbQuery(sql){ | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(this._connection)) { | ||
return reject(sqlConnect(this._connection)); | ||
} | ||
this._connection.query(sql, function (error, results, fields) { | ||
if (error) return reject(error); | ||
return resolve(results); | ||
}); | ||
}); | ||
}; | ||
dbJoin(data){ | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(this._connection)) { | ||
return reject(sqlConnect(this._connection)); | ||
} | ||
this._connection.query( | ||
`SELECT ${selectOption(data)} FROM ${this._table} ${joinTable( | ||
data.join | ||
)} ${whereClause(data)} ${isLatest(data)} ${isLimit( | ||
data | ||
)} ${pagination(data)}`, | ||
(err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
if (data!= undefined && (!isCheck(data.pagination) || data.pagination >= 0)) { | ||
this._connection.query( | ||
`SELECT count(*) as totalData FROM ${this._table} ${joinTable( | ||
data.join | ||
)} ${whereClause(data)} ${isLatest(data)}`, | ||
(err, resp) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
let paginate = paginationData(resp[0].totalData, data); | ||
return resolve({ res, paginate }); | ||
} | ||
); | ||
} else { | ||
return resolve(res); | ||
} | ||
} | ||
); | ||
}); | ||
}; | ||
dbWith(data){ | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(this._connection)) { | ||
return reject(sqlConnect(this._connection)); | ||
} | ||
this._connection.query( | ||
`SELECT ${selectOption(data)} FROM ${this._table} ${withTable( | ||
data.with | ||
)} ${whereClause(data)} ${isLatest(data)} ${isLimit( | ||
data | ||
)} ${pagination(data)}`, | ||
(err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
if (data!= undefined && (!isCheck(data.pagination) || data.pagination >= 0)) { | ||
this._connection.query( | ||
`SELECT count(*) as totalData FROM ${this._table} ${withTable( | ||
data.with | ||
)} ${whereClause(data)} ${isLatest(data)}`, | ||
(err, resp) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
let paginate = paginationData(resp[0].totalData, data); | ||
return resolve({ res, paginate }); | ||
} | ||
); | ||
} else { | ||
return resolve(res); | ||
} | ||
} | ||
); | ||
}); | ||
}; | ||
create(data){ | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(this._connection)) { | ||
return reject(sqlConnect(this._connection)); | ||
} | ||
if (isTable(this._table)) return reject(isTable(this._table)); | ||
if (data.elements != undefined && data.elements != null) { | ||
let keys = Object.keys(data.elements).toString(); | ||
let values = Object.values(data.elements).toString(); | ||
this._connection.query( | ||
`INSERT INTO ${this._table} (${keys}) VALUES (${values})`, | ||
(err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
return resolve(res); | ||
} | ||
); | ||
} else { | ||
return resolve(true); | ||
} | ||
}); | ||
}; | ||
save(data){ | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(this._connection)) { | ||
return reject(sqlConnect(this._connection)); | ||
} | ||
if (isTable(this._table)) return reject(isTable(this._table)); | ||
if (data.elements != undefined && data.elements != null) { | ||
if ( | ||
whereClause(data) != undefined && | ||
whereClause(data) != null && | ||
whereClause(data) != "" | ||
) { | ||
var sqlQuery = `UPDATE ${this._table} ${getKeyValue( | ||
data.elements, | ||
"SET" | ||
)} ${whereClause(data)}`; | ||
} else { | ||
var sqlQuery = `INSERT INTO ${this._table} ${getKeyValue( | ||
data.elements, | ||
"SET" | ||
)}`; | ||
} | ||
this._connection.query(sqlQuery, (err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
return resolve(res); | ||
}); | ||
} else { | ||
return resolve(true); | ||
} | ||
}); | ||
}; | ||
update(data){ | ||
if (isTable(this._table)) return reject(isTable(this._table)); | ||
return new Promise(async (resolve, reject) => { | ||
if (sqlConnect(this._connection)) { | ||
return reject(sqlConnect(this._connection)); | ||
} | ||
if (data.elements != undefined && data.elements != null) { | ||
var sqlQuery = `UPDATE ${this._table} ${getKeyValue( | ||
data.elements, | ||
"SET" | ||
)} ${whereClause(data)}`; | ||
this._connection.query(sqlQuery, (err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
return resolve(res); | ||
}); | ||
} else { | ||
return resolve(true); | ||
} | ||
}); | ||
}; | ||
destroy(data){ | ||
if (isTable(this._table)) return reject(isTable(this._table)); | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(this._connection)) { | ||
return reject(sqlConnect(this._connection)); | ||
} | ||
if (data.where != undefined) { | ||
this._connection.query( | ||
`DELETE FROM ${this._table} ${whereClause(data)}`, | ||
(err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
return resolve(res); | ||
} | ||
); | ||
} | ||
}); | ||
}; | ||
deleleAll(data){ | ||
if (isTable(this._table)) return reject(isTable(this._table)); | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(this._connection)) { | ||
return reject(sqlConnect(this._connection)); | ||
} | ||
this._connection.query(`DELETE FROM ${this._table} ${whereClause(data)}`, (err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
return resolve(res); | ||
}); | ||
}); | ||
}; | ||
trunCate(data){ | ||
if (isTable(this._table)) return reject(isTable(this._table)); | ||
return new Promise((resolve, reject) => { | ||
if (sqlConnect(this._connection)) { | ||
return reject(sqlConnect(this._connection)); | ||
} | ||
this._connection.query(`TRUNCATE TABLE ${this._table}`, (err, res) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
return resolve(res); | ||
}); | ||
}); | ||
}; | ||
} | ||
module.exports = { | ||
BaseModels, | ||
setBDConnection, | ||
get, | ||
first, | ||
dbQuery, | ||
trunCate, | ||
deleleAll, | ||
destroy, | ||
create, | ||
update, | ||
save, | ||
dbJoin, | ||
dbWith, | ||
}; |
{ | ||
"name": "@krishnapawar/kp-mysql-models", | ||
"version": "1.2.0", | ||
"version": "1.2.1", | ||
"description": "The `kp-mysql-models` library simplifies MySQL database interaction, streamlining tasks such as creating, inserting, updating, and deleting records, as well as handling complex queries like joins, pagination, and conditional operations. By offering an intuitive and efficient approach, it significantly reduces development time and effort.", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -6,2 +6,3 @@ # kp-mysql-models | ||
>npm i kp-mysql-models | ||
>npm i @krishnapawar/kp-mysql-models | ||
@@ -8,0 +9,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Empty package
Supply chain riskPackage does not contain any code. It may be removed, is name squatting, or the result of a faulty package publish.
Found 1 instance in 1 package
42641
1102
424