| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- namespace SqlSugar
- {
- public partial class OscarQueryBuilder : QueryBuilder
- {
- #region Sql Template
- public override string PageTempalte
- {
- get
- {
- /*
- SELECT * FROM TABLE WHERE CONDITION ORDER BY ID DESC LIMIT 10 offset 0
- */
- var template = "SELECT {0} FROM {1} {2} {3} {4} LIMIT {6} offset {5}";
- return template;
- }
- }
- public override string DefaultOrderByTemplate
- {
- get
- {
- return "ORDER BY NOW() ";
- }
- }
- #endregion
- #region Common Methods
- public override bool IsComplexModel(string sql)
- {
- return Regex.IsMatch(sql, @"AS ""\w+\.\w+""")|| Regex.IsMatch(sql, @"AS ""\w+\.\w+\.\w+""");
- }
- public override string ToSqlString()
- {
- base.AppendFilter();
- string oldOrderValue = this.OrderByValue;
- string result = null;
- sql = new StringBuilder();
- sql.AppendFormat(SqlTemplate, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString);
- if (IsCount) { return sql.ToString(); }
- if (Skip != null && Take == null)
- {
- if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
- result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString, Skip.ObjToInt(), long.MaxValue);
- }
- else if (Skip == null && Take != null)
- {
- if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
- result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, 0, Take.ObjToInt());
- }
- else if (Skip != null && Take != null)
- {
- if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
- result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, Skip.ObjToInt() > 0 ? Skip.ObjToInt() : 0, Take);
- }
- else
- {
- result = sql.ToString();
- }
- this.OrderByValue = oldOrderValue;
- result = GetSqlQuerySql(result);
- return result;
- }
- #endregion
- #region Get SQL Partial
- public override string GetSelectValue
- {
- get
- {
- string result = string.Empty;
- if (this.SelectValue == null || this.SelectValue is string)
- {
- result = GetSelectValueByString();
- }
- else
- {
- result = GetSelectValueByExpression();
- }
- if (this.SelectType == ResolveExpressType.SelectMultiple)
- {
- this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this.JoinQueryInfos.Select(it => it.TableName));
- }
- return result;
- }
- }
- #endregion
- }
- }
|