# 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