mirror of
https://github.com/thinkjs/thinkjs.git
synced 2026-01-25 14:42:47 +00:00
get version from package file
This commit is contained in:
parent
e741b6b8af
commit
3f3a6489da
@ -1,4 +1,5 @@
|
||||
var url = require("url");
|
||||
var querystring = require("querystring");
|
||||
/**
|
||||
* 数据库基类
|
||||
* @return {[type]} [description]
|
||||
@ -143,6 +144,7 @@ var db = module.exports = Class(function(){
|
||||
*/
|
||||
parseWhere: function(where){
|
||||
var whereStr = "";
|
||||
var self = this;
|
||||
if (is_string(where)) {
|
||||
whereStr = where;
|
||||
}else{
|
||||
@ -168,10 +170,138 @@ var db = module.exports = Class(function(){
|
||||
if (!keySafeRegExp.test(key.trim())) {
|
||||
throw_error(key + " is not safe");
|
||||
};
|
||||
|
||||
var multi = where && where['_multi'];
|
||||
key = key.trim();
|
||||
// 支持 name|title|nickname 方式定义查询字段
|
||||
if (key.indexOf('|') > -1) {
|
||||
var arr = key.split("|");
|
||||
whereStr += arr.map(function(item, i){
|
||||
var v = multi ? val[i] : val;
|
||||
return "(" + self.parseWhereItem(self.parseKey(item, v)) + ")";
|
||||
}).join(" OR ");
|
||||
}else if (key.indexOf("&") > -1) {
|
||||
var arr = key.split("&");
|
||||
whereStr += arr.map(function(item, i){
|
||||
var v = multi ? val[i] : val;
|
||||
return "(" + self.parseWhereItem(self.parseKey(item, v)) + ")";
|
||||
}).join(" AND ");
|
||||
}else{
|
||||
whereStr += this.parseWhereItem(this.parseKey(key), val);
|
||||
}
|
||||
}
|
||||
whereStr += ")" + operate;
|
||||
}
|
||||
whereStr = whereStr.substr(0, -operate.length);
|
||||
}
|
||||
return whereStr ? (" WHERE " + whereStr) : "";
|
||||
},
|
||||
parseWhereItem: function(key, val){
|
||||
|
||||
return "";
|
||||
},
|
||||
parseThinkWhere: function(key, val){
|
||||
var whereStr = "";
|
||||
switch(key){
|
||||
// 字符串模式查询条件
|
||||
case "_string":
|
||||
return val;
|
||||
// 复合查询条件
|
||||
case "_complex":
|
||||
return this.parseWhere(val).substr(6);
|
||||
// 字符串模式查询条件
|
||||
case "_query":
|
||||
var where = querystring.parse(val);
|
||||
var op = " AND ";
|
||||
if ("_logic" in where) {
|
||||
op = " " + where["_logic"].toLowerCase() + " ";
|
||||
delete where["_logic"];
|
||||
};
|
||||
var arr = [];
|
||||
for(var name in where){
|
||||
var val = where[name];
|
||||
val = this.parseKey(name) + " = " + this.parseValue(val);
|
||||
arr.push(val);
|
||||
}
|
||||
whereStr = arr.join(op);
|
||||
return whereStr;
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
return "";
|
||||
},
|
||||
parseLimit: function(limit){
|
||||
return limit ? (" LIMIT " + limit) : "";
|
||||
},
|
||||
parseJoin: function(join){
|
||||
var joinStr = "";
|
||||
if (join) {
|
||||
if (is_object(join)) {
|
||||
for(var key in join){
|
||||
var val = join[key];
|
||||
if (val.toLowerCase().indexOf("join") > -1) {
|
||||
joinStr += val;
|
||||
}else{
|
||||
joinStr += " LEFT JOIN " + val;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
joinStr += " LEFT JOIN " + join;
|
||||
}
|
||||
};
|
||||
//将__TABLE_NAME__这样的字符串替换成正规的表名,并且带上前缀和后缀
|
||||
joinStr = joinStr.replace(/__([A-Z_-]+)__/g, function(a, b){
|
||||
return C('db_prefix') + b.toLowerCase();
|
||||
});
|
||||
return joinStr;
|
||||
},
|
||||
parseOrder: function(order){
|
||||
var orderStr = "";
|
||||
var self = this;
|
||||
if (is_array(order)) {
|
||||
orderStr = order.map(function(item){
|
||||
return self.parseKey(item);
|
||||
}).join(",");
|
||||
}else if (is_object(order)) {
|
||||
var arr = [];
|
||||
for(var key in order){
|
||||
var val = order[key];
|
||||
val = this.parseKey(key) + " " + val;
|
||||
arr.push(val);
|
||||
}
|
||||
orderStr = arr.join(",");
|
||||
};
|
||||
return order ? (" ORDER BY " + order) : "";
|
||||
},
|
||||
parseGroup: function(group){
|
||||
return group ? (" GROUP BY " + group) : "";
|
||||
},
|
||||
parseHaving: function(having){
|
||||
return having ? (" HAVING " + having) : "";
|
||||
},
|
||||
parseComment: function(comment){
|
||||
return comment ? (" /* " + comment + "*/") : "";
|
||||
},
|
||||
parseDistinct: function(distinct){
|
||||
return distinct ? (" Distinct " + distinct) : "";
|
||||
},
|
||||
parseUnion: function(union){
|
||||
if (!union) {
|
||||
return "";
|
||||
};
|
||||
var str = "";
|
||||
if ("_all" in union) {
|
||||
str = "UNION ALL ";
|
||||
delete union["_all"];
|
||||
}else{
|
||||
str = "UNION ";
|
||||
}
|
||||
var sql = [];
|
||||
for(var key in union){
|
||||
var val = union[key];
|
||||
val = str + (is_array(val) ? this.buildSelectSql(val) : val);
|
||||
sql.push(sql);
|
||||
}
|
||||
return sql.join(" ");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -12,6 +12,8 @@ if (!global.RUNTIME_PATH) {
|
||||
if (global.APP_DEBUG === undefined) {
|
||||
global.APP_DEBUG = false;
|
||||
};
|
||||
global.THINK_VERSION = "0.1.4";
|
||||
global.THINK_PATH = __dirname;
|
||||
//从package.json文件里获取版本号
|
||||
var version = JSON.parse(require("fs").readFileSync(THINK_PATH + "/../package.json", "utf8")).version;
|
||||
global.THINK_VERSION = version;
|
||||
require(THINK_PATH + "/Common/runtime.js");
|
||||
Loading…
x
Reference in New Issue
Block a user