get version from package file

This commit is contained in:
welefen 2013-11-17 15:05:21 +08:00
parent e741b6b8af
commit 3f3a6489da
2 changed files with 134 additions and 2 deletions

View File

@ -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(" ");
}
}
});

View File

@ -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");