# 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{}{})
}