optimisticlock

package module
v1.1.1 Latest Latest
Warning

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

Go to latest
Published: Apr 27, 2023 License: MIT Imports: 9 Imported by: 11

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

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

// The Model's Version value passed in to Updates will be ignored
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

// Model's Version is zero, then no condition will be added to the WHERE
DB.Model(&User{}).Where("id = 1").Update("age", 12)
// UPDATE `users` SET `age`=12,`version`=`version`+1 WHERE id = 1

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