feat: add sqlstring and supports-color modules
- Introduced sqlstring module for SQL escape and formatting. - Added supports-color module to detect terminal color support. - Created dashboard and login views with Bootstrap styling. - Implemented user schema in SQL with mock data for testing.
This commit is contained in:
222
backend/node_modules/mysql2/lib/promise/connection.js
generated
vendored
Normal file
222
backend/node_modules/mysql2/lib/promise/connection.js
generated
vendored
Normal file
@@ -0,0 +1,222 @@
|
||||
'use strict';
|
||||
|
||||
const EventEmitter = require('events').EventEmitter;
|
||||
const PromisePreparedStatementInfo = require('./prepared_statement_info.js');
|
||||
const makeDoneCb = require('./make_done_cb.js');
|
||||
const inheritEvents = require('./inherit_events.js');
|
||||
const BaseConnection = require('../base/connection.js');
|
||||
|
||||
class PromiseConnection extends EventEmitter {
|
||||
constructor(connection, promiseImpl) {
|
||||
super();
|
||||
this.connection = connection;
|
||||
this.Promise = promiseImpl || Promise;
|
||||
inheritEvents(connection, this, [
|
||||
'error',
|
||||
'drain',
|
||||
'connect',
|
||||
'end',
|
||||
'enqueue',
|
||||
]);
|
||||
}
|
||||
|
||||
release() {
|
||||
this.connection.release();
|
||||
}
|
||||
|
||||
query(query, params) {
|
||||
const c = this.connection;
|
||||
const localErr = new Error();
|
||||
if (typeof params === 'function') {
|
||||
throw new Error(
|
||||
'Callback function is not available with promise clients.'
|
||||
);
|
||||
}
|
||||
return new this.Promise((resolve, reject) => {
|
||||
const done = makeDoneCb(resolve, reject, localErr);
|
||||
if (params !== undefined) {
|
||||
c.query(query, params, done);
|
||||
} else {
|
||||
c.query(query, done);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
execute(query, params) {
|
||||
const c = this.connection;
|
||||
const localErr = new Error();
|
||||
if (typeof params === 'function') {
|
||||
throw new Error(
|
||||
'Callback function is not available with promise clients.'
|
||||
);
|
||||
}
|
||||
return new this.Promise((resolve, reject) => {
|
||||
const done = makeDoneCb(resolve, reject, localErr);
|
||||
if (params !== undefined) {
|
||||
c.execute(query, params, done);
|
||||
} else {
|
||||
c.execute(query, done);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
end() {
|
||||
return new this.Promise((resolve) => {
|
||||
this.connection.end(resolve);
|
||||
});
|
||||
}
|
||||
|
||||
beginTransaction() {
|
||||
const c = this.connection;
|
||||
const localErr = new Error();
|
||||
return new this.Promise((resolve, reject) => {
|
||||
const done = makeDoneCb(resolve, reject, localErr);
|
||||
c.beginTransaction(done);
|
||||
});
|
||||
}
|
||||
|
||||
commit() {
|
||||
const c = this.connection;
|
||||
const localErr = new Error();
|
||||
return new this.Promise((resolve, reject) => {
|
||||
const done = makeDoneCb(resolve, reject, localErr);
|
||||
c.commit(done);
|
||||
});
|
||||
}
|
||||
|
||||
rollback() {
|
||||
const c = this.connection;
|
||||
const localErr = new Error();
|
||||
return new this.Promise((resolve, reject) => {
|
||||
const done = makeDoneCb(resolve, reject, localErr);
|
||||
c.rollback(done);
|
||||
});
|
||||
}
|
||||
|
||||
ping() {
|
||||
const c = this.connection;
|
||||
const localErr = new Error();
|
||||
return new this.Promise((resolve, reject) => {
|
||||
c.ping((err) => {
|
||||
if (err) {
|
||||
localErr.message = err.message;
|
||||
localErr.code = err.code;
|
||||
localErr.errno = err.errno;
|
||||
localErr.sqlState = err.sqlState;
|
||||
localErr.sqlMessage = err.sqlMessage;
|
||||
reject(localErr);
|
||||
} else {
|
||||
resolve(true);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
connect() {
|
||||
const c = this.connection;
|
||||
const localErr = new Error();
|
||||
return new this.Promise((resolve, reject) => {
|
||||
c.connect((err, param) => {
|
||||
if (err) {
|
||||
localErr.message = err.message;
|
||||
localErr.code = err.code;
|
||||
localErr.errno = err.errno;
|
||||
localErr.sqlState = err.sqlState;
|
||||
localErr.sqlMessage = err.sqlMessage;
|
||||
reject(localErr);
|
||||
} else {
|
||||
resolve(param);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
prepare(options) {
|
||||
const c = this.connection;
|
||||
const promiseImpl = this.Promise;
|
||||
const localErr = new Error();
|
||||
return new this.Promise((resolve, reject) => {
|
||||
c.prepare(options, (err, statement) => {
|
||||
if (err) {
|
||||
localErr.message = err.message;
|
||||
localErr.code = err.code;
|
||||
localErr.errno = err.errno;
|
||||
localErr.sqlState = err.sqlState;
|
||||
localErr.sqlMessage = err.sqlMessage;
|
||||
reject(localErr);
|
||||
} else {
|
||||
const wrappedStatement = new PromisePreparedStatementInfo(
|
||||
statement,
|
||||
promiseImpl
|
||||
);
|
||||
resolve(wrappedStatement);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
changeUser(options) {
|
||||
const c = this.connection;
|
||||
const localErr = new Error();
|
||||
return new this.Promise((resolve, reject) => {
|
||||
c.changeUser(options, (err) => {
|
||||
if (err) {
|
||||
localErr.message = err.message;
|
||||
localErr.code = err.code;
|
||||
localErr.errno = err.errno;
|
||||
localErr.sqlState = err.sqlState;
|
||||
localErr.sqlMessage = err.sqlMessage;
|
||||
reject(localErr);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
get config() {
|
||||
return this.connection.config;
|
||||
}
|
||||
|
||||
get threadId() {
|
||||
return this.connection.threadId;
|
||||
}
|
||||
}
|
||||
// patching PromiseConnection
|
||||
// create facade functions for prototype functions on "Connection" that are not yet
|
||||
// implemented with PromiseConnection
|
||||
|
||||
// proxy synchronous functions only
|
||||
(function (functionsToWrap) {
|
||||
for (let i = 0; functionsToWrap && i < functionsToWrap.length; i++) {
|
||||
const func = functionsToWrap[i];
|
||||
|
||||
if (
|
||||
typeof BaseConnection.prototype[func] === 'function' &&
|
||||
PromiseConnection.prototype[func] === undefined
|
||||
) {
|
||||
PromiseConnection.prototype[func] = (function factory(funcName) {
|
||||
return function () {
|
||||
return BaseConnection.prototype[funcName].apply(
|
||||
this.connection,
|
||||
arguments
|
||||
);
|
||||
};
|
||||
})(func);
|
||||
}
|
||||
}
|
||||
})([
|
||||
// synchronous functions
|
||||
'close',
|
||||
'createBinlogStream',
|
||||
'destroy',
|
||||
'escape',
|
||||
'escapeId',
|
||||
'format',
|
||||
'pause',
|
||||
'pipe',
|
||||
'resume',
|
||||
'unprepare',
|
||||
]);
|
||||
|
||||
module.exports = PromiseConnection;
|
27
backend/node_modules/mysql2/lib/promise/inherit_events.js
generated
vendored
Normal file
27
backend/node_modules/mysql2/lib/promise/inherit_events.js
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
'use strict';
|
||||
|
||||
function inheritEvents(source, target, events) {
|
||||
const listeners = {};
|
||||
target
|
||||
.on('newListener', (eventName) => {
|
||||
if (events.indexOf(eventName) >= 0 && !target.listenerCount(eventName)) {
|
||||
source.on(
|
||||
eventName,
|
||||
(listeners[eventName] = function () {
|
||||
const args = [].slice.call(arguments);
|
||||
args.unshift(eventName);
|
||||
|
||||
target.emit.apply(target, args);
|
||||
})
|
||||
);
|
||||
}
|
||||
})
|
||||
.on('removeListener', (eventName) => {
|
||||
if (events.indexOf(eventName) >= 0 && !target.listenerCount(eventName)) {
|
||||
source.removeListener(eventName, listeners[eventName]);
|
||||
delete listeners[eventName];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = inheritEvents;
|
19
backend/node_modules/mysql2/lib/promise/make_done_cb.js
generated
vendored
Normal file
19
backend/node_modules/mysql2/lib/promise/make_done_cb.js
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
'use strict';
|
||||
|
||||
function makeDoneCb(resolve, reject, localErr) {
|
||||
return function (err, rows, fields) {
|
||||
if (err) {
|
||||
localErr.message = err.message;
|
||||
localErr.code = err.code;
|
||||
localErr.errno = err.errno;
|
||||
localErr.sql = err.sql;
|
||||
localErr.sqlState = err.sqlState;
|
||||
localErr.sqlMessage = err.sqlMessage;
|
||||
reject(localErr);
|
||||
} else {
|
||||
resolve([rows, fields]);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = makeDoneCb;
|
112
backend/node_modules/mysql2/lib/promise/pool.js
generated
vendored
Normal file
112
backend/node_modules/mysql2/lib/promise/pool.js
generated
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
'use strict';
|
||||
|
||||
const EventEmitter = require('events').EventEmitter;
|
||||
const makeDoneCb = require('./make_done_cb.js');
|
||||
const PromisePoolConnection = require('./pool_connection.js');
|
||||
const inheritEvents = require('./inherit_events.js');
|
||||
const BasePool = require('../base/pool.js');
|
||||
|
||||
class PromisePool extends EventEmitter {
|
||||
constructor(pool, thePromise) {
|
||||
super();
|
||||
this.pool = pool;
|
||||
this.Promise = thePromise || Promise;
|
||||
inheritEvents(pool, this, ['acquire', 'connection', 'enqueue', 'release']);
|
||||
}
|
||||
|
||||
getConnection() {
|
||||
const corePool = this.pool;
|
||||
return new this.Promise((resolve, reject) => {
|
||||
corePool.getConnection((err, coreConnection) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(new PromisePoolConnection(coreConnection, this.Promise));
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
releaseConnection(connection) {
|
||||
if (connection instanceof PromisePoolConnection) connection.release();
|
||||
}
|
||||
|
||||
query(sql, args) {
|
||||
const corePool = this.pool;
|
||||
const localErr = new Error();
|
||||
if (typeof args === 'function') {
|
||||
throw new Error(
|
||||
'Callback function is not available with promise clients.'
|
||||
);
|
||||
}
|
||||
return new this.Promise((resolve, reject) => {
|
||||
const done = makeDoneCb(resolve, reject, localErr);
|
||||
if (args !== undefined) {
|
||||
corePool.query(sql, args, done);
|
||||
} else {
|
||||
corePool.query(sql, done);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
execute(sql, args) {
|
||||
const corePool = this.pool;
|
||||
const localErr = new Error();
|
||||
if (typeof args === 'function') {
|
||||
throw new Error(
|
||||
'Callback function is not available with promise clients.'
|
||||
);
|
||||
}
|
||||
return new this.Promise((resolve, reject) => {
|
||||
const done = makeDoneCb(resolve, reject, localErr);
|
||||
if (args) {
|
||||
corePool.execute(sql, args, done);
|
||||
} else {
|
||||
corePool.execute(sql, done);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
end() {
|
||||
const corePool = this.pool;
|
||||
const localErr = new Error();
|
||||
return new this.Promise((resolve, reject) => {
|
||||
corePool.end((err) => {
|
||||
if (err) {
|
||||
localErr.message = err.message;
|
||||
localErr.code = err.code;
|
||||
localErr.errno = err.errno;
|
||||
localErr.sqlState = err.sqlState;
|
||||
localErr.sqlMessage = err.sqlMessage;
|
||||
reject(localErr);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
(function (functionsToWrap) {
|
||||
for (let i = 0; functionsToWrap && i < functionsToWrap.length; i++) {
|
||||
const func = functionsToWrap[i];
|
||||
|
||||
if (
|
||||
typeof BasePool.prototype[func] === 'function' &&
|
||||
PromisePool.prototype[func] === undefined
|
||||
) {
|
||||
PromisePool.prototype[func] = (function factory(funcName) {
|
||||
return function () {
|
||||
return BasePool.prototype[funcName].apply(this.pool, arguments);
|
||||
};
|
||||
})(func);
|
||||
}
|
||||
}
|
||||
})([
|
||||
// synchronous functions
|
||||
'escape',
|
||||
'escapeId',
|
||||
'format',
|
||||
]);
|
||||
|
||||
module.exports = PromisePool;
|
54
backend/node_modules/mysql2/lib/promise/pool_cluster.js
generated
vendored
Normal file
54
backend/node_modules/mysql2/lib/promise/pool_cluster.js
generated
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
'use strict';
|
||||
|
||||
const PromisePoolConnection = require('./pool_connection');
|
||||
const makeDoneCb = require('./make_done_cb');
|
||||
|
||||
class PromisePoolNamespace {
|
||||
constructor(poolNamespace, thePromise) {
|
||||
this.poolNamespace = poolNamespace;
|
||||
this.Promise = thePromise || Promise;
|
||||
}
|
||||
|
||||
getConnection() {
|
||||
const corePoolNamespace = this.poolNamespace;
|
||||
return new this.Promise((resolve, reject) => {
|
||||
corePoolNamespace.getConnection((err, coreConnection) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(new PromisePoolConnection(coreConnection, this.Promise));
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
query(sql, values) {
|
||||
const corePoolNamespace = this.poolNamespace;
|
||||
const localErr = new Error();
|
||||
if (typeof values === 'function') {
|
||||
throw new Error(
|
||||
'Callback function is not available with promise clients.'
|
||||
);
|
||||
}
|
||||
return new this.Promise((resolve, reject) => {
|
||||
const done = makeDoneCb(resolve, reject, localErr);
|
||||
corePoolNamespace.query(sql, values, done);
|
||||
});
|
||||
}
|
||||
|
||||
execute(sql, values) {
|
||||
const corePoolNamespace = this.poolNamespace;
|
||||
const localErr = new Error();
|
||||
if (typeof values === 'function') {
|
||||
throw new Error(
|
||||
'Callback function is not available with promise clients.'
|
||||
);
|
||||
}
|
||||
return new this.Promise((resolve, reject) => {
|
||||
const done = makeDoneCb(resolve, reject, localErr);
|
||||
corePoolNamespace.execute(sql, values, done);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PromisePoolNamespace;
|
19
backend/node_modules/mysql2/lib/promise/pool_connection.js
generated
vendored
Normal file
19
backend/node_modules/mysql2/lib/promise/pool_connection.js
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
'use strict';
|
||||
|
||||
const PromiseConnection = require('./connection.js');
|
||||
const BasePoolConnection = require('../base/pool_connection.js');
|
||||
|
||||
class PromisePoolConnection extends PromiseConnection {
|
||||
constructor(connection, promiseImpl) {
|
||||
super(connection, promiseImpl);
|
||||
}
|
||||
|
||||
destroy() {
|
||||
return BasePoolConnection.prototype.destroy.apply(
|
||||
this.connection,
|
||||
arguments
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PromisePoolConnection;
|
32
backend/node_modules/mysql2/lib/promise/prepared_statement_info.js
generated
vendored
Normal file
32
backend/node_modules/mysql2/lib/promise/prepared_statement_info.js
generated
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
'use strict';
|
||||
|
||||
const makeDoneCb = require('./make_done_cb.js');
|
||||
|
||||
class PromisePreparedStatementInfo {
|
||||
constructor(statement, promiseImpl) {
|
||||
this.statement = statement;
|
||||
this.Promise = promiseImpl;
|
||||
}
|
||||
|
||||
execute(parameters) {
|
||||
const s = this.statement;
|
||||
const localErr = new Error();
|
||||
return new this.Promise((resolve, reject) => {
|
||||
const done = makeDoneCb(resolve, reject, localErr);
|
||||
if (parameters) {
|
||||
s.execute(parameters, done);
|
||||
} else {
|
||||
s.execute(done);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
close() {
|
||||
return new this.Promise((resolve) => {
|
||||
this.statement.close();
|
||||
resolve();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PromisePreparedStatementInfo;
|
Reference in New Issue
Block a user