optimisticlock

package module
v1.1.3 Latest Latest
Warning

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

Go to latest
Published: Jul 25, 2024 License: MIT Imports: 9 Imported by: 15

README

Optimisticlock

Optimisticlock is optimistic lock plugin for gorm.

Usage

import "gorm.io/plugin/optimisticlock"

type User struct {
  ID      int
  Name    string
  Age     uint
  Version optimisticlock.Version
}

var user User
DB.First(&user)

DB.Model(&user).Update("age", 18)
// UPDATE `users` SET `age`=18,`version`=`version`+1 WHERE `users`.`version` = 1 AND `id` = 1

// Ignoring the optimistic lock check.
DB.Unscoped().Model(&user).Update("age", 18)
// UPDATE `users` SET `age`=18,`version`=`version`+1 WHERE `id` = 1

// Ignoring the passed Version value.
DB.Model(&user).Updates(&User{Age: 18, Version: optimisticlock.Version{Int64: 1}})
// UPDATE `users` SET `age`=18,`version`=`version`+1 WHERE `users`.`version` = 3 AND `id` = 1

// If the Model's Version value is zero, Without considering optimistic lock check.
DB.Model(&User{}).Where("id = 1").Update("age", 12)
// UPDATE `users` SET `age`=12,`version`=`version`+1 WHERE id = 1

// When want to use GORM's Save method, need to call Select. Otherwise, will return primary key duplicate error.
// The Select param is the fields that you want to update or "*".
DB.Model(&user).Select("*").Save(&User{Age: 18})

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Version

type Version sql.NullInt64

func (*Version) CreateClauses

func (v *Version) CreateClauses(field *schema.Field) []clause.Interface

func (Version) MarshalJSON

func (v Version) MarshalJSON() ([]byte, error)

func (*Version) Scan

func (v *Version) Scan(value interface{}) error

func (*Version) UnmarshalJSON

func (v *Version) UnmarshalJSON(bytes []byte) error

func (*Version) UpdateClauses

func (v *Version) UpdateClauses(field *schema.Field) []clause.Interface

func (Version) Value

func (v Version) Value() (driver.Value, error)

type VersionCreateClause

type VersionCreateClause struct {
	Field *schema.Field
}

func (VersionCreateClause) Build

func (VersionCreateClause) MergeClause

func (v VersionCreateClause) MergeClause(*clause.Clause)

func (VersionCreateClause) ModifyStatement

func (v VersionCreateClause) ModifyStatement(stmt *gorm.Statement)

func (VersionCreateClause) Name

func (v VersionCreateClause) Name() string

type VersionUpdateClause

type VersionUpdateClause struct {
	Field *schema.Field
}

func (VersionUpdateClause) Build

func (VersionUpdateClause) MergeClause

func (v VersionUpdateClause) MergeClause(*clause.Clause)

func (VersionUpdateClause) ModifyStatement

func (v VersionUpdateClause) ModifyStatement(stmt *gorm.Statement)

func (VersionUpdateClause) Name

func (v VersionUpdateClause) Name() string

Jump to

Keyboard shortcuts

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