123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- using SqlSugar;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- namespace SqlSugar.BzTDengineCore
- {
- public partial class TDengineQueryBuilder : 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 Sql Template
- #region Common Methods
- public override string GetTableNameString
- {
- get
- {
- if (TableShortName != null && Context.CurrentConnectionConfig?.MoreSettings?.PgSqlIsAutoToLower == false)
- {
- TableShortName = Builder.GetTranslationColumnName(TableShortName);
- }
- return base.GetTableNameString;
- }
- }
- 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 = 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 (OrderByValue == "ORDER BY ") 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 (OrderByValue == "ORDER BY ") OrderByValue += GetSelectValue.Split(',')[0];
- result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, 0, Take.ObjToInt());
- }
- else if (Skip != null && Take != null)
- {
- if (OrderByValue == "ORDER BY ") 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();
- }
- OrderByValue = oldOrderValue;
- result = GetSqlQuerySql(result);
- if (result.IndexOf("-- No table") > 0)
- {
- return "-- No table";
- }
- if (TranLock != null)
- {
- result = result + TranLock;
- }
- return result;
- }
- #endregion Common Methods
- #region Get SQL Partial
- public override string GetSelectValue
- {
- get
- {
- string result = string.Empty;
- if (SelectValue == null || SelectValue is string)
- {
- result = GetSelectValueByString();
- }
- else
- {
- result = GetSelectValueByExpression();
- }
- if (SelectType == ResolveExpressType.SelectMultiple)
- {
- SelectCacheKey = SelectCacheKey + string.Join("-", JoinQueryInfos.Select(it => it.TableName));
- }
- if (IsDistinct)
- {
- result = "distinct " + result;
- }
- if (SubToListParameters != null && SubToListParameters.Any())
- {
- result = SubToListMethod(result);
- }
- return result;
- }
- }
- #endregion Get SQL Partial
- }
- }
|