2024-04-29 15:59:38 +08:00
|
|
|
package db
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"strings"
|
|
|
|
|
2024-05-07 17:19:55 +08:00
|
|
|
"git.botann.com/lijun/sql-builder/util"
|
2024-04-29 15:59:38 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
func (s *SqlBuilder[T]) buildSql() string {
|
2024-05-28 14:18:21 +08:00
|
|
|
s.DeletePlaceholderSymbol()
|
2024-05-07 17:19:55 +08:00
|
|
|
return s.Sql
|
2024-04-29 15:59:38 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (s *SqlBuilder[T]) buildPaginateSql(sqls string) string {
|
|
|
|
s.Opts.Page.Init()
|
|
|
|
pageIndex := s.Opts.Page.GetPageIndex()
|
|
|
|
pageSize := s.Opts.Page.GetPageSize()
|
|
|
|
return fmt.Sprintf("%s limit %d offset %d", sqls, pageSize, (pageIndex-1)*pageSize)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *SqlBuilder[T]) buildCountSql(sqls string) string {
|
|
|
|
return fmt.Sprintf("select count(1) from (%s) as t", sqls)
|
|
|
|
}
|
|
|
|
|
2024-05-28 14:18:21 +08:00
|
|
|
func (s *SqlBuilder[T]) buildSelect(selects ...string) {
|
|
|
|
for _, v := range selects {
|
|
|
|
s.Sql = strings.Replace(s.Sql, util.SelectPlaceholder, fmt.Sprintf(",%s", v), 1)
|
2024-04-29 15:59:38 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-05-28 14:18:21 +08:00
|
|
|
func (s *SqlBuilder[T]) buildCondition(conds ...string) {
|
|
|
|
for _, v := range conds {
|
2024-05-09 09:51:58 +08:00
|
|
|
s.Sql = strings.Replace(s.Sql, util.ConditionPlaceholder, fmt.Sprintf(" and %s", v), 1)
|
2024-04-29 15:59:38 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-05-28 14:18:21 +08:00
|
|
|
func (s *SqlBuilder[T]) buildGroup(groups ...string) {
|
|
|
|
for _, v := range groups {
|
|
|
|
s.Sql = strings.Replace(s.Sql, util.GroupPlaceholder, fmt.Sprintf(",%s", v), 1)
|
2024-04-29 15:59:38 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-05-28 14:18:21 +08:00
|
|
|
func (s *SqlBuilder[T]) buildOrder(orders ...string) {
|
|
|
|
for _, v := range orders {
|
|
|
|
s.Sql = strings.Replace(s.Sql, util.OrderPlaceholder, fmt.Sprintf(",%s", v), 1)
|
2024-04-29 15:59:38 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// tdengine专用
|
2024-05-28 14:18:21 +08:00
|
|
|
func (s *SqlBuilder[T]) buildPartition(partitions ...string) {
|
|
|
|
for _, v := range partitions {
|
|
|
|
s.Sql = strings.Replace(s.Sql, util.PartitionPlaceholder, fmt.Sprintf(",%s", v), 1)
|
2024-04-29 15:59:38 +08:00
|
|
|
}
|
2024-05-28 14:18:21 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (s *SqlBuilder[T]) DeletePlaceholderSymbol() {
|
|
|
|
s.Sql = strings.Replace(s.Sql, util.SelectPlaceholder, "", -1)
|
|
|
|
s.Sql = strings.Replace(s.Sql, util.ConditionPlaceholder, "", -1)
|
|
|
|
s.Sql = strings.Replace(s.Sql, util.GroupPlaceholder, "", -1)
|
|
|
|
s.Sql = strings.Replace(s.Sql, util.OrderPlaceholder, "", -1)
|
2024-05-07 17:19:55 +08:00
|
|
|
s.Sql = strings.Replace(s.Sql, util.PartitionPlaceholder, "", -1)
|
2024-04-29 15:59:38 +08:00
|
|
|
}
|