21 Commits

Author SHA1 Message Date
Peter Turi
2c60bfe3bc
Fix null setting on reused objects
Starting from v1.25.1 gorm seems to not reset null fields, causing
incosistent behavior with previous behavior.
2024-02-13 19:23:12 +01:00
Jinzhu
39d84cba5f Add serializer support (#5078)
* Update context

* Update GormFieldValuer

* Add Serializer

* Add Serializer Interface

* Refactor gorm field

* Refactor setter, valuer

* Add sync.Pool

* Fix test

* Add pool manager

* Fix pool manager

* Add poolInitializer

* Add Serializer Scan support

* Add Serializer Value method

* Add serializer test

* Finish Serializer

* Fix JSONSerializer for postgres

* Fix JSONSerializer for sqlserver

* Test serializer tag

* Add unixtime serializer

* Update go.mod
2022-02-19 17:02:53 +08:00
piyongcai
a0d6ff1fea
time.Time, []byte type add alias support. (rebase master) (#4992)
* time.Time, []byte type add alias support

* reformat
2022-01-12 13:11:40 +08:00
kinggo
b47cf57f5e
ci: add gofumpt check in reviewdog (#4973) 2022-01-06 15:02:53 +08:00
piyongcai
380cc64ff5
fix type alias AutoMigrate bug(Add Test Case) (#4888)
* fix type alias AutoMigrate bug. eg

```go
package main

type IDer interface{ GetID() int64 }

// ID will add some method to implement some interface eg: GetID
type ID int64
func (z ID) GetID() int64 { return int64(z) }

type Test struct {
	ID
	Code string `gorm:"size:50"`
	Name string `gorm:"size:50"`
}

func main() {
	db, err := gorm.Open(postgres.New(postgres.Config{
		DSN: `dsn`,
		PreferSimpleProtocol: false,
	}), &gorm.Config{
		Logger:                 logger.Default.LogMode(logger.Info),
		SkipDefaultTransaction: true,
	})
	if err != nil {
		log.Fatal(err)
	}

	if err = db.AutoMigrate(&Test{}); err != nil {
		// invalid embedded struct for Test's field ID, should be struct, but got main.ID
		log.Fatal(err)
	}
}
```

* fix type alias AutoMigrate bug. eg

```go
package main

type IDer interface{ GetID() int64 }

// ID will add some method to implement some interface eg: GetID
type ID int64
func (z ID) GetID() int64 { return int64(z) }

type Test struct {
	ID
	Code string `gorm:"size:50"`
	Name string `gorm:"size:50"`
}

func main() {
	db, err := gorm.Open(postgres.New(postgres.Config{
		DSN:                  `dsn`,
		PreferSimpleProtocol: false,
	}), &gorm.Config{
		Logger:                 logger.Default.LogMode(logger.Info),
		SkipDefaultTransaction: true,
	})
	if err != nil {
		log.Fatal(err)
	}

	if err = db.AutoMigrate(&Test{}); err != nil {
		// invalid embedded struct for Test's field ID, should be struct, but got main.ID
		log.Fatal(err)
	}
}
```

* Add typealis test.

* try to fix golangci-lint
2021-12-10 17:45:36 +08:00
Jinzhu
6b7abc54a2 Fix tests 2021-05-06 13:06:31 +08:00
Jinzhu
2aca96d147 test ignore migration, close #4314, #4315 2021-05-05 08:26:48 +08:00
Jinzhu
90a40361ed Fix set bool field from null 2020-07-04 08:21:23 +08:00
Jinzhu
6b98ced13d Fix set time field from null, close #3108 2020-07-04 07:45:07 +08:00
Jinzhu
a1e35bdc94 Support merge batch data some having primary values 2020-06-20 16:52:15 +08:00
Jinzhu
1490a062db Refactor codebase and add benchmark test 2020-06-05 23:26:56 +08:00
Jinzhu
d50879cc28 Add field permission test 2020-06-05 19:18:22 +08:00
Jinzhu
8bb05a5a69 Refactor tests files 2020-06-02 10:50:38 +08:00
Jinzhu
e986371a42 Rename package name 2020-06-02 09:18:01 +08:00
Jinzhu
028c9d6e17 Test Updates 2020-05-30 17:01:28 +08:00
Jinzhu
a46d48ccb3 Add tests for controlling field permission with tag 2020-04-08 08:32:28 +08:00
Jinzhu
04adbaf7f6 Fix parse stmt ReflectValue 2020-02-24 08:51:35 +08:00
Jinzhu
e2a360b9fa Add Before/After callbacks 2020-02-23 21:22:35 +08:00
Jinzhu
18236fa3d7 Add more tests for setter, valuer 2020-02-16 00:37:59 +08:00
Jinzhu
faee069a9f Test Field Valuer, Setter 2020-02-15 20:28:03 +08:00
Jinzhu
2cb88dc7c5 Add Field Valuer, Setter 2020-02-15 18:24:37 +08:00