# README
Gorm/Scopes
Example
package main
import (
"time"
"gorm.io/gorm"
"github.com/go-kratos-ecosystem/components/v2/gorm/scopes"
)
func main() {
var db *gorm.DB
db.Scopes(scopes.
// trait
When(true, func(db *gorm.DB) *gorm.DB {
return db.Where("deleted_at IS NULL")
}).
Unless(true, func(db *gorm.DB) *gorm.DB {
return db.Where("deleted_at IS NOT NULL")
}).
// Where
Where("name = ?", "Flc").
WhereBetween("created_at", time.Now(), time.Now()).
WhereNotBetween("created_at", time.Now(), time.Now()).
WhereIn("name", "Flc", "Flc 2").
WhereNotIn("name", "Flc", "Flc 2").
WhereLike("name", "Flc%").
WhereNotLike("name", "Flc%").
WhereEq("name", "Flc").
WhereNe("name", "Flc").
WhereGt("age", 18).
WhereEgt("age", 18).
WhereLt("age", 18).
WhereElt("age", 18).
// Order
OrderBy("id").
OrderBy("id", "desc").
OrderBy("id", "asc").
OrderByDesc("id").
OrderByAsc("id").
OrderByRaw("id desc").
// Limit
Limit(10).
Take(10).
// Offset
Offset(10).
Skip(10).
// Page
Page(1, 20).
// To Scope()
Scope()).
Find(&[]struct{}{})
}
# Functions
Limit add limit condition
Limit(3).
No description provided by the author
Offset add offset condition
Offset(3).
OrderBy add order by condition
OrderBy("name") OrderBy("name", "desc") OrderBy("name", "asc").
OrderByAsc add order by asc condition
OrderByAsc("name").
OrderByDesc add order by desc condition
OrderByDesc("name").
OrderByRaw add order by raw condition
OrderByRaw("name desc") OrderByRaw("name asc") OrderByRaw("name desc, age asc") OrderByRaw("FIELD(id, 3, 1, 2)").
Page add page condition
Page(2, 10).
Skip add offset condition
Skip(3).
Take add limit condition
Take(3).
Unless if condition is false, apply the scopes
Unless(false, func(db *gorm.DB) *gorm.DB { return db.Where("name = ?", "Flc") }) Unless(true, func(db *gorm.DB) *gorm.DB { return db.Where("name = ?", "Flc") }).
When if condition is true, apply the scopes
When(true, func(db *gorm.DB) *gorm.DB { return db.Where("name = ?", "Flc") }) When(false, func(db *gorm.DB) *gorm.DB { return db.Where("name = ?", "Flc") }).
Where add where condition
Where("name = ?", "Flc") Where("name = ? AND age = ?", "Flc", 20).
WhereBetween add where between condition
WhereBetween("age", 18, 20).
WhereEgt add where egt condition
WhereEgt("age", 18).
WhereElt add where elt condition
WhereElt("age", 18).
WhereEq add where eq condition
WhereEq("name", "Flc") WhereEq("age", 18).
WhereGt add where gt condition
WhereGt("age", 18).
WhereIn add where in condition
WhereIn("name", []string{"WhereInUser1", "WhereInUser2"}) WhereIn("age", []int{18, 20}) WhereIn("name", "WhereInUser1", "WhereInUser2").
WhereLike add where like condition
WhereLike("name", "Flc") WhereLike("name", "Flc%") WhereLike("name", "%Flc") WhereLike("name", "%Flc%").
WhereLt add where lt condition
WhereLt("age", 18).
WhereNe add where ne condition
WhereNe("name", "Flc") WhereNe("age", 18).
WhereNot add where not condition
WhereNot("name = ?", "Flc") WhereNot("name = ? AND age = ?", "Flc", 20).
WhereNotBetween add where not between condition
WhereNotBetween("age", 18, 20).
WhereNotIn add where not in condition
WhereNotIn("name", []string{"WhereInUser1", "WhereInUser2"}) WhereNotIn("age", []int{18, 20}) WhereNotIn("name", "WhereInUser1", "WhereInUser2").
WhereNotLike add where not like condition
WhereNotLike("name", "Flc") WhereNotLike("name", "Flc%") WhereNotLike("name", "%Flc") WhereNotLike("name", "%Flc%").
WhereNotNull add where not null condition
WhereNotNull("name").
WhereNull add where null condition
WhereNull("name").
# Type aliases
No description provided by the author