mirror of
https://github.com/Mintplex-Labs/express-admin.git
synced 2026-07-24 03:56:38 -04:00
91 lines
3.4 KiB
JavaScript
91 lines
3.4 KiB
JavaScript
|
|
exports.client = {};
|
|
|
|
function quotes (result) {
|
|
return (exports.client.mysql || exports.client.sqlite)
|
|
? result : result.replace(/`/g,'"');
|
|
}
|
|
|
|
exports.sql = function (name) {
|
|
var s = '';
|
|
switch (name) {
|
|
// select
|
|
case 'list-view': s = (this.client.mysql || this.client.sqlite)
|
|
? "SELECT {0} FROM {1} {2} {3} {4} ORDER BY {5} LIMIT {6},{7} ;"
|
|
: "SELECT {0} FROM {1} {2} {3} {4} ORDER BY {5} LIMIT {7} OFFSET {6} ;";
|
|
break;
|
|
case 'get-record': s =
|
|
"SELECT {0} FROM {1} WHERE {2} ;";
|
|
break;
|
|
case 'get-records': s =
|
|
"SELECT {0} FROM {1} ;";
|
|
break;
|
|
case 'total': s =
|
|
"SELECT COUNT(DISTINCT {0}) AS `count` FROM {1} {2} {3} ;"
|
|
break;
|
|
// edit
|
|
case 'insert': s = (this.client.mysql || this.client.sqlite)
|
|
? "INSERT INTO {0} ({1}) VALUES ({2}) ;"
|
|
: "INSERT INTO {0} ({1}) VALUES ({2}) RETURNING {3} ;";
|
|
break;
|
|
case 'update': s =
|
|
"UPDATE {0} SET {1} WHERE {2} ;";
|
|
break;
|
|
case 'delete': s =
|
|
"DELETE FROM {0} WHERE {1} ;";
|
|
break;
|
|
// many to many
|
|
case 'insert-many': s =
|
|
"INSERT INTO {0} ({1}) VALUES {2} ;";
|
|
break;
|
|
case 'delete-many': s =
|
|
"DELETE FROM {0} WHERE {1} AND {2} ;";
|
|
break;
|
|
|
|
|
|
// config queries
|
|
case 'show-tables': s = this.client.mysql
|
|
? "SHOW TABLES IN `{0}` ;"
|
|
: (this.client.pg
|
|
? "SELECT table_name FROM information_schema.tables WHERE table_schema = '{0}' ;"
|
|
: "SELECT * FROM sqlite_master WHERE type = 'table' ;"
|
|
);
|
|
break;
|
|
case 'show-columns': s = this.client.mysql
|
|
? "SHOW COLUMNS IN `{0}` IN `{1}` ;"
|
|
: (this.client.pg
|
|
? 'SELECT cs.column_name AS "Field", cs.data_type AS "Type", cs.is_nullable AS "Null", tc.constraint_type AS "Key", cs.column_default AS "Default", '+
|
|
'cs.numeric_precision, cs.numeric_precision_radix, cs.numeric_scale, cs.character_maximum_length '+
|
|
'FROM "information_schema"."columns" cs '+
|
|
'LEFT JOIN "information_schema"."key_column_usage" kc '+
|
|
' ON cs.column_name = kc.column_name '+
|
|
' AND cs.table_schema = kc.table_schema '+
|
|
' AND cs.table_name = kc.table_name '+
|
|
'LEFT JOIN "information_schema"."table_constraints" tc '+
|
|
' ON kc.constraint_name = tc.constraint_name '+
|
|
' AND kc.table_schema = tc.table_schema '+
|
|
' AND kc.table_name = tc.table_name '+
|
|
'WHERE '+
|
|
' cs.table_name = \'{0}\' '+
|
|
' AND cs.table_schema = \'{1}\' ;'
|
|
: "PRAGMA table_info('{0}') ;"
|
|
);
|
|
break;
|
|
|
|
default: s = 'Query name doesn\'t exist'; break;
|
|
}
|
|
return s;
|
|
}
|
|
|
|
exports.replace = function () {
|
|
if (!arguments.length) return null;
|
|
var sql = quotes(this.sql(arguments[0]));
|
|
if (arguments.length > 1) {
|
|
[].splice.call(arguments, 0, 1);
|
|
for (var i=0; i < arguments.length; i++) {
|
|
sql = sql.replace('{'+i+'}', arguments[i]);
|
|
}
|
|
}
|
|
return sql;
|
|
}
|