func (s *Slices) HasMore() bool {
	return s.currentIndex < len(s.slices)-1
}
HasMore whether has more slice
package check
import (
	"fmt"
	"strings"
	"gorm.io/gen/internal/model"
	"gorm.io/gen/internal/parser"
)
type Clause interface {
	String() string
}
var (
	_ Clause = new(SQLClause)
	_ Clause = new(IfClause)
	_ Clause = new(ElseClause)
	_ Clause = new(WhereClause)
	_ Clause = new(SetClause)
)
type clause struct {
	VarName string
	Type    model.Status
}
type SQLClause struct {
	clause
	Value []string
}
func (s SQLClause) String() string {
	return strings.ReplaceAll(strings.Join(s.Value, "+"), `"+"`, "")
}
type IfClause struct {
	clause
	Cond  string
	Value []Clause
	Else  []Clause
}
func (i IfClause) String() string {
	return fmt.Sprintf("helper.IfClause(%s)", i.VarName)
}
type ElseClause struct {
	clause
	Cond  string
	Value []Clause
}
func (e ElseClause) String() (res string) {
	condList := make([]string, len(e.Value))
	for i, v := range e.Value {
		condList[i] = v.String()
	}
	return strings.ReplaceAll(strings.Join(condList, "+"), `"+"`, "")
}
type WhereClause struct {
	clause
	Value []Clause
}
func (w WhereClause) String() string {
	return fmt.Sprintf("helper.WhereClause(%s)", w.VarName)
}
type SetClause struct {
	clause
	Value []Clause
}
func (w SetClause) String() string {
	return fmt.Sprintf("helper.SetClause(%s)", w.VarName)
}
type Slices struct {
	slices       []slice
	tmpl         []string
	currentIndex int
	Names        map[model.Status]int
}
func NewSlices() *Slices {
	return &Slices{
		Names: map[model.Status]int{
			model.IF:    0,
			model.WHERE: 0,
			model.SET:   0,
		},
	}
}
func (s *Slices) Len() int {
	return len(s.slices)
}
func (s *Slices) Next() slice {
	s.currentIndex++
	return s.slices[s.currentIndex]
}
func (s *Slices) SubIndex() {
	s.currentIndex--
}