scopes

package
v2.15.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 25, 2024 License: MIT Imports: 3 Imported by: 0

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Scopes

type Scopes []func(*gorm.DB) *gorm.DB

func Limit

func Limit(limit int) *Scopes

Limit add limit condition

Limit(3)

func New

func New() *Scopes

func Offset

func Offset(offset int) *Scopes

Offset add offset condition

Offset(3)

func OrderBy

func OrderBy(column string, reorder ...string) *Scopes

OrderBy add order by condition

OrderBy("name")
OrderBy("name", "desc")
OrderBy("name", "asc")

func OrderByAsc

func OrderByAsc(column string) *Scopes

OrderByAsc add order by asc condition

OrderByAsc("name")

func OrderByDesc

func OrderByDesc(column string) *Scopes

OrderByDesc add order by desc condition

OrderByDesc("name")

func OrderByRaw

func OrderByRaw(sql interface{}) *Scopes

OrderByRaw add order by raw condition

OrderByRaw("name desc")
OrderByRaw("name asc")
OrderByRaw("name desc, age asc")
OrderByRaw("FIELD(id, 3, 1, 2)")

func Page

func Page(page, prePage int) *Scopes

Page add page condition

Page(2, 10)

func Skip

func Skip(offset int) *Scopes

Skip add offset condition

Skip(3)

func Take

func Take(limit int) *Scopes

Take add limit condition

Take(3)

func Unless

func Unless(condition bool, f func(db *gorm.DB) *gorm.DB) *Scopes

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") })

func When

func When(condition bool, f func(db *gorm.DB) *gorm.DB) *Scopes

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") })

func Where

func Where(query interface{}, args ...interface{}) *Scopes

Where add where condition

Where("name = ?", "Flc")
Where("name = ? AND age = ?", "Flc", 20)

func WhereBetween

func WhereBetween(field string, start, end interface{}) *Scopes

WhereBetween add where between condition

WhereBetween("age", 18, 20)

func WhereEgt

func WhereEgt(field string, value interface{}) *Scopes

WhereEgt add where egt condition

WhereEgt("age", 18)

func WhereElt

func WhereElt(field string, value interface{}) *Scopes

WhereElt add where elt condition

WhereElt("age", 18)

func WhereEq

func WhereEq(field string, value interface{}) *Scopes

WhereEq add where eq condition

WhereEq("name", "Flc")
WhereEq("age", 18)

func WhereGt

func WhereGt(field string, value interface{}) *Scopes

WhereGt add where gt condition

WhereGt("age", 18)

func WhereIn

func WhereIn(field string, values ...interface{}) *Scopes

WhereIn add where in condition

WhereIn("name", []string{"WhereInUser1", "WhereInUser2"})
WhereIn("age", []int{18, 20})
WhereIn("name", "WhereInUser1", "WhereInUser2")

func WhereLike

func WhereLike(field string, value interface{}) *Scopes

WhereLike add where like condition

WhereLike("name", "Flc")
WhereLike("name", "Flc%")
WhereLike("name", "%Flc")
WhereLike("name", "%Flc%")

func WhereLt

func WhereLt(field string, value interface{}) *Scopes

WhereLt add where lt condition

WhereLt("age", 18)

func WhereNe

func WhereNe(field string, value interface{}) *Scopes

WhereNe add where ne condition

WhereNe("name", "Flc")
WhereNe("age", 18)

func WhereNot

func WhereNot(query interface{}, args ...interface{}) *Scopes

WhereNot add where not condition

WhereNot("name = ?", "Flc")
WhereNot("name = ? AND age = ?", "Flc", 20)

func WhereNotBetween

func WhereNotBetween(field string, start, end interface{}) *Scopes

WhereNotBetween add where not between condition

WhereNotBetween("age", 18, 20)

func WhereNotIn

func WhereNotIn(field string, values ...interface{}) *Scopes

WhereNotIn add where not in condition

WhereNotIn("name", []string{"WhereInUser1", "WhereInUser2"})
WhereNotIn("age", []int{18, 20})
WhereNotIn("name", "WhereInUser1", "WhereInUser2")

func WhereNotLike

func WhereNotLike(field string, value interface{}) *Scopes

WhereNotLike add where not like condition

WhereNotLike("name", "Flc")
WhereNotLike("name", "Flc%")
WhereNotLike("name", "%Flc")
WhereNotLike("name", "%Flc%")

func WhereNotNull

func WhereNotNull(field string) *Scopes

WhereNotNull add where not null condition

WhereNotNull("name")

func WhereNull

func WhereNull(field string) *Scopes

WhereNull add where null condition

WhereNull("name")

func (*Scopes) Add

func (s *Scopes) Add(scopes ...func(*gorm.DB) *gorm.DB) *Scopes

func (*Scopes) Apply

func (s *Scopes) Apply(db *gorm.DB) *gorm.DB

func (*Scopes) Limit

func (s *Scopes) Limit(limit int) *Scopes

Limit add limit condition

Limit(3)

func (*Scopes) Offset

func (s *Scopes) Offset(offset int) *Scopes

Offset add offset condition

Offset(3)

func (*Scopes) OrderBy

func (s *Scopes) OrderBy(column string, reorder ...string) *Scopes

OrderBy add order by condition

OrderBy("name")
OrderBy("name", "desc")
OrderBy("name", "asc")

func (*Scopes) OrderByAsc

func (s *Scopes) OrderByAsc(column string) *Scopes

OrderByAsc add order by asc condition

OrderByAsc("name")

func (*Scopes) OrderByDesc

func (s *Scopes) OrderByDesc(column string) *Scopes

OrderByDesc add order by desc condition

OrderByDesc("name")

func (*Scopes) OrderByRaw

func (s *Scopes) OrderByRaw(sql interface{}) *Scopes

OrderByRaw add order by raw condition

OrderByRaw("name desc")
OrderByRaw("name asc")
OrderByRaw("name desc, age asc")
OrderByRaw("FIELD(id, 3, 1, 2)")

func (*Scopes) Page

func (s *Scopes) Page(page, prePage int) *Scopes

Page add page condition

Page(2, 10)

func (*Scopes) Scope

func (s *Scopes) Scope() func(*gorm.DB) *gorm.DB

func (*Scopes) Scopes

func (s *Scopes) Scopes() []func(*gorm.DB) *gorm.DB

func (*Scopes) Skip

func (s *Scopes) Skip(offset int) *Scopes

Skip add offset condition

Skip(3)

func (*Scopes) Take

func (s *Scopes) Take(limit int) *Scopes

Take add limit condition

Take(3)

func (*Scopes) Unless

func (s *Scopes) Unless(condition bool, fc func(*gorm.DB) *gorm.DB) *Scopes

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") })

func (*Scopes) When

func (s *Scopes) When(condition bool, fc func(*gorm.DB) *gorm.DB) *Scopes

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") })

func (*Scopes) Where

func (s *Scopes) Where(query interface{}, args ...interface{}) *Scopes

Where add where condition

Where("name = ?", "Flc")
Where("name = ? AND age = ?", "Flc", 20)

func (*Scopes) WhereBetween

func (s *Scopes) WhereBetween(column string, start, end interface{}) *Scopes

WhereBetween add where between condition

WhereBetween("age", 18, 20)

func (*Scopes) WhereEgt

func (s *Scopes) WhereEgt(column string, value interface{}) *Scopes

WhereEgt add where egt condition

WhereEgt("age", 18)

func (*Scopes) WhereElt

func (s *Scopes) WhereElt(column string, value interface{}) *Scopes

WhereElt add where elt condition

WhereElt("age", 18)

func (*Scopes) WhereEq

func (s *Scopes) WhereEq(column string, value interface{}) *Scopes

WhereEq add where eq condition

WhereEq("name", "Flc")
WhereEq("age", 18)

func (*Scopes) WhereGt

func (s *Scopes) WhereGt(column string, value interface{}) *Scopes

WhereGt add where gt condition

WhereGt("age", 18)

func (*Scopes) WhereIn

func (s *Scopes) WhereIn(column string, values ...interface{}) *Scopes

WhereIn add where in condition

WhereIn("name", []string{"WhereInUser1", "WhereInUser2"})
WhereIn("age", []int{18, 20})
WhereIn("name", "WhereInUser1", "WhereInUser2")

func (*Scopes) WhereLike

func (s *Scopes) WhereLike(column string, value interface{}) *Scopes

WhereLike add where like condition

WhereLike("name", "Flc")
WhereLike("name", "Flc%")
WhereLike("name", "%Flc")
WhereLike("name", "%Flc%")

func (*Scopes) WhereLt

func (s *Scopes) WhereLt(column string, value interface{}) *Scopes

WhereLt add where lt condition

WhereLt("age", 18)

func (*Scopes) WhereNe

func (s *Scopes) WhereNe(column string, value interface{}) *Scopes

WhereNe add where ne condition

WhereNe("name", "Flc")
WhereNe("age", 18)

func (*Scopes) WhereNot

func (s *Scopes) WhereNot(query interface{}, args ...interface{}) *Scopes

WhereNot add where not condition

WhereNot("name = ?", "Flc")
WhereNot("name = ? AND age = ?", "Flc", 20)

func (*Scopes) WhereNotBetween

func (s *Scopes) WhereNotBetween(column string, start, end interface{}) *Scopes

WhereNotBetween add where not between condition

WhereNotBetween("age", 18, 20)

func (*Scopes) WhereNotIn

func (s *Scopes) WhereNotIn(column string, values ...interface{}) *Scopes

WhereNotIn add where not in condition

WhereNotIn("name", []string{"WhereInUser1", "WhereInUser2"})
WhereNotIn("age", []int{18, 20})
WhereNotIn("name", "WhereInUser1", "WhereInUser2")

func (*Scopes) WhereNotLike

func (s *Scopes) WhereNotLike(column string, value interface{}) *Scopes

WhereNotLike add where not like condition

WhereNotLike("name", "Flc")
WhereNotLike("name", "Flc%")
WhereNotLike("name", "%Flc")
WhereNotLike("name", "%Flc%")

func (*Scopes) WhereNotNull

func (s *Scopes) WhereNotNull(column string) *Scopes

WhereNotNull add where not null condition

WhereNotNull("name")

func (*Scopes) WhereNull

func (s *Scopes) WhereNull(column string) *Scopes

WhereNull add where null condition

WhereNull("name")

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL