12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package clause
- import (
- "git.sxidc.com/go-tools/utils/strutils"
- "strings"
- )
- type Join struct {
- joinType string
- tableName string
- on string
- }
- func NewJoin(tableName string, on string) *Join {
- return &Join{
- joinType: "JOIN",
- tableName: tableName,
- on: on,
- }
- }
- func (clause *Join) Left() *Join {
- clause.joinType = "LEFT JOIN"
- return clause
- }
- func (clause *Join) Right() *Join {
- clause.joinType = "RIGHT JOIN"
- return clause
- }
- func (clause *Join) Inner() *Join {
- clause.joinType = "INNER JOIN"
- return clause
- }
- func (clause *Join) Clause() (string, error) {
- if strutils.IsStringEmpty(clause.joinType) || strutils.IsStringEmpty(clause.tableName) || strutils.IsStringEmpty(clause.on) {
- return "", nil
- }
- clauseBuilder := strings.Builder{}
- clauseBuilder.WriteString(clause.joinType)
- clauseBuilder.WriteString(" " + clause.tableName)
- clauseBuilder.WriteString(" ON ")
- clauseBuilder.WriteString(clause.on + "\n")
- return clauseBuilder.String(), nil
- }
- func (clause *Join) Args() []any {
- return make([]any, 0)
- }
|