(Feat): Initial Commit
This commit is contained in:
63
internal/util/db/join.go
Normal file
63
internal/util/db/join.go
Normal file
@@ -0,0 +1,63 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/aarondl/sqlboiler/v4/queries/qm"
|
||||
)
|
||||
|
||||
// InnerJoinWithFilter returns an InnerJoin QueryMod formatted using the provided join tables and columns including an
|
||||
// additional filter condition. Omitting the optional filter table will use the provided join table as a base for the filter.
|
||||
func InnerJoinWithFilter(baseTable string, baseColumn string, joinTable string, joinColumn string, filterColumn string, filterValue interface{}, optFilterTable ...string) qm.QueryMod {
|
||||
filterTable := joinTable
|
||||
if len(optFilterTable) > 0 {
|
||||
filterTable = optFilterTable[0]
|
||||
}
|
||||
|
||||
return qm.InnerJoin(fmt.Sprintf("%s ON %s.%s=%s.%s AND %s.%s=?",
|
||||
joinTable,
|
||||
joinTable,
|
||||
joinColumn,
|
||||
baseTable,
|
||||
baseColumn,
|
||||
filterTable,
|
||||
filterColumn), filterValue)
|
||||
}
|
||||
|
||||
// InnerJoin returns an InnerJoin QueryMod formatted using the provided join tables and columns.
|
||||
func InnerJoin(baseTable string, baseColumn string, joinTable string, joinColumn string) qm.QueryMod {
|
||||
return qm.InnerJoin(fmt.Sprintf("%s ON %s.%s=%s.%s",
|
||||
joinTable,
|
||||
joinTable,
|
||||
joinColumn,
|
||||
baseTable,
|
||||
baseColumn))
|
||||
}
|
||||
|
||||
// LeftOuterJoin returns an LeftOuterJoin QueryMod formatted using the provided join tables and columns.
|
||||
func LeftOuterJoin(baseTable string, baseColumn string, joinTable string, joinColumn string) qm.QueryMod {
|
||||
return qm.LeftOuterJoin(fmt.Sprintf("%s ON %s.%s=%s.%s",
|
||||
joinTable,
|
||||
joinTable,
|
||||
joinColumn,
|
||||
baseTable,
|
||||
baseColumn))
|
||||
}
|
||||
|
||||
// LeftOuterJoinWithFilter returns an LeftOuterJoin QueryMod formatted using the provided join tables and columns including an
|
||||
// additional filter condition. Omitting the optional filter table will use the provided join table as a base for the filter.
|
||||
func LeftOuterJoinWithFilter(baseTable string, baseColumn string, joinTable string, joinColumn string, filterColumn string, filterValue interface{}, optFilterTable ...string) qm.QueryMod {
|
||||
filterTable := joinTable
|
||||
if len(optFilterTable) > 0 {
|
||||
filterTable = optFilterTable[0]
|
||||
}
|
||||
|
||||
return qm.LeftOuterJoin(fmt.Sprintf("%s ON %s.%s=%s.%s AND %s.%s=?",
|
||||
joinTable,
|
||||
joinTable,
|
||||
joinColumn,
|
||||
baseTable,
|
||||
baseColumn,
|
||||
filterTable,
|
||||
filterColumn), filterValue)
|
||||
}
|
||||
Reference in New Issue
Block a user