Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: replace "id" with model.IDField #604

Merged
merged 6 commits into from
Oct 29, 2020

Conversation

zepatrik
Copy link
Contributor

Still found some places where "id" was hardcoded instead of using model.IDField().

@zepatrik zepatrik requested a review from a team as a code owner October 28, 2020 11:49
@@ -350,8 +350,8 @@ func (c *Connection) Update(model interface{}, excludeColumns ...string) error {
}

tn := m.TableName()
cols := columns.ForStructWithAlias(model, tn, m.As)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This uses the outer model instead of the iteration model. Not sure if this was a bug or intended behavior but I assume it should have been the current model within the iteration.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think this has had problems in the past where TableName() had to be defined on the slice type or something similar. I agree that this should be m and not model. Can you please add a failing test case for this?

Copy link
Contributor Author

@zepatrik zepatrik Oct 29, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like it actually does not matter. It is not possible to pass a interface{} slice, because that breaks reflection everywhere. So only slices of a struct type are allowed, and it also makes sense to only allow them. Therefore it resembles the exact same behavior as before in my opinion.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know too little about reflection to judge this statement, so I would prefer reverting this to the original behavior just in case this breaks something somewhere.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, reverted

cols.Add(columnNames...)

} else {
cols = columns.ForStructWithAlias(model, tn, m.As)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here, model was the outer model.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member

@aeneasr aeneasr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! Could you please add some tests to cover these changes?

c1 := columns.ForStruct(&foo{}, "foo")
c2 := columns.ForStruct(&foos{}, "foo")
c1 := columns.ForStruct(&foo{}, "foo", "id")
c2 := columns.ForStruct(&foos{}, "foo", "id")
r.Equal(c1.String(), c2.String())
}

func Test_Columns_Basics(t *testing.T) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is missing two tests:

  • PK is id and the ID field can not be written but can be read.
  • PK is notid and the ID field ca be written and read but notid can not be written.
    have a test where the PK is not "id" and you are not able to update that particular PK

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added cases but not everything is possible like you expect, see #556

columns/writeable_columns_test.go Show resolved Hide resolved
columns/readable_columns_test.go Show resolved Hide resolved
@@ -350,8 +350,8 @@ func (c *Connection) Update(model interface{}, excludeColumns ...string) error {
}

tn := m.TableName()
cols := columns.ForStructWithAlias(model, tn, m.As)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think this has had problems in the past where TableName() had to be defined on the slice type or something similar. I agree that this should be m and not model. Can you please add a failing test case for this?

cols.Add(columnNames...)

} else {
cols = columns.ForStructWithAlias(model, tn, m.As)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

executors_test.go Show resolved Hide resolved
executors_test.go Show resolved Hide resolved
modelType = modelType.Elem()
}

if modelType.Kind() == reflect.String {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can model be a string?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, there are several test cases for that, e.g. https://github.com/gobuffalo/pop/blob/master/executors_test.go#L1506

testdata/migrations/20201028153041_hydra_clients.up.fizz Outdated Show resolved Hide resolved
testdata/migrations/20201028153041_hydra_clients.down.fizz Outdated Show resolved Hide resolved
@aeneasr aeneasr merged commit f36afb5 into gobuffalo:development Oct 29, 2020
paganotoni added a commit that referenced this pull request Jan 27, 2021
* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
paganotoni added a commit that referenced this pull request Jan 28, 2021
* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
paganotoni added a commit that referenced this pull request May 6, 2021
* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>
paganotoni added a commit that referenced this pull request Nov 23, 2021
* v5.3.4 (#644)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* tidying

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>
paganotoni added a commit that referenced this pull request Nov 23, 2021
* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

* Export WhereID, Alias, WhereNamedID (#637)

This patch export some model convenience functions which are useful when constructing queries outside of pop: custom updates, deletes, inserts, ...

Signed-off-by: aeneasr <[email protected]>

Co-authored-by: Antonio Pagano <[email protected]>

* fix: log model values everywhere (#656)

Some SQL logs were missing the values as argument. This adds all places

* Add delete to query builder (#658)

This allows writing delete queries without knowing the exact primary key or for composite keys.
`Destroy` only allows to delete by primary key, but there are many cases where you want to delete multiple rows or by some other query than the ID.

See #29

* Sort down migrations (#657)

Basically, just reversing the up migration order does not work, as that puts "all" migrations before specific ones. Therefore, I added implemented the proper `Less` function for down migrations explicitly.

Related #533

Co-authored-by: hackerman <[email protected]>

* Preserve eager information when validating models (#664) (#665)

Co-authored-by: Karl Haas <[email protected]>

* Migrate from packr to fs (#667)

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* Migrate from packr to fs

* Migrate to v6

* Use old build tags

* Update error handling

* Fix error after rebase

* Fix error handling

* Fix filenames for embed Go 1.16 usage

Co-authored-by: Antonio Pagano <[email protected]>

* Task merging master (#669)

* v5.3.4 (#644)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* tidying

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>
Co-authored-by: karlhaas <[email protected]>
Co-authored-by: Karl Haas <[email protected]>
Co-authored-by: Matthias Fasching <[email protected]>
paganotoni added a commit that referenced this pull request Apr 17, 2022
* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

* Export WhereID, Alias, WhereNamedID (#637)

This patch export some model convenience functions which are useful when constructing queries outside of pop: custom updates, deletes, inserts, ...

Signed-off-by: aeneasr <[email protected]>

Co-authored-by: Antonio Pagano <[email protected]>

* fix: log model values everywhere (#656)

Some SQL logs were missing the values as argument. This adds all places

* Add delete to query builder (#658)

This allows writing delete queries without knowing the exact primary key or for composite keys.
`Destroy` only allows to delete by primary key, but there are many cases where you want to delete multiple rows or by some other query than the ID.

See #29

* Sort down migrations (#657)

Basically, just reversing the up migration order does not work, as that puts "all" migrations before specific ones. Therefore, I added implemented the proper `Less` function for down migrations explicitly.

Related #533

Co-authored-by: hackerman <[email protected]>

* Preserve eager information when validating models (#664) (#665)

Co-authored-by: Karl Haas <[email protected]>

* Migrate from packr to fs (#667)

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* Migrate from packr to fs

* Migrate to v6

* Use old build tags

* Update error handling

* Fix error after rebase

* Fix error handling

* Fix filenames for embed Go 1.16 usage

Co-authored-by: Antonio Pagano <[email protected]>

* Task merging master (#669)

* v5.3.4 (#644)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* tidying

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

* Replace removed  command

The  command has been removed from the CLI. This patch introduces a new mechanism to reliably dump the SQL schema for CockroachDB.

* Resolve `EagerPreload` panic caused for pointer references

Resolves a panic where `EagerPreload` tried to set `reflect.Struct` for a `reflect.Pointer` on 1.. associations.

Signed-off-by: aeneasr <[email protected]>

* Resolve `EagerPreload` panic caused by NullUUID

Resolves a panic where `EagerPreload` was trying to set UUID into NullUUID.

Signed-off-by: aeneasr <[email protected]>

* Support pointers in n+1 `Eager` loading

Resolves an issue where n+1 eager associations would error with a double pointer in `associations.ForStruct`.

Signed-off-by: aeneasr <[email protected]>

* Improve error message of associations.ForStruct

Signed-off-by: aeneasr <[email protected]>

* Add test cases for `IsZeroOfUnderlyingType`

Signed-off-by: aeneasr <[email protected]>

* Resolve an obscure bug where empty structs got loaded for NULL foreign keys

Closes #139

Signed-off-by: aeneasr <[email protected]>

* Resolve association regression in finders.go

Signed-off-by: aeneasr <[email protected]>

* Use dedicated migrations for preloading regression test

Signed-off-by: aeneasr <[email protected]>

* Fix code regression

Signed-off-by: aeneasr <[email protected]>

* Fix test code regressions

Signed-off-by: aeneasr <[email protected]>

* Fix sql migration order

Signed-off-by: aeneasr <[email protected]>

* Resolve order issue in test

* Ignore order when testing for nil values in test

* Pass Context during exec in create. (#688)

* feat: support embedded struct fields (#691)

* test: use `T.TempDir` to create temporary test directory

This commit replaces `ioutil.TempDir` with `t.TempDir` in tests. The
directory created by `t.TempDir` is automatically removed when the test
and all its subtests complete.

Prior to this commit, temporary directory created using `ioutil.TempDir`
needs to be removed manually by calling `os.RemoveAll`, which is omitted
in some tests. The error handling boilerplate e.g.
	defer func() {
		if err := os.RemoveAll(dir); err != nil {
			t.Fatal(err)
		}
	}
is also tedious, but `t.TempDir` handles this for us nicely.

Reference: https://pkg.go.dev/testing#T.TempDir
Signed-off-by: Eng Zer Jun <[email protected]>

* task: adding next version number

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>
Co-authored-by: karlhaas <[email protected]>
Co-authored-by: Karl Haas <[email protected]>
Co-authored-by: Matthias Fasching <[email protected]>
Co-authored-by: Martin Eigenbrodt <[email protected]>
Co-authored-by: Eng Zer Jun <[email protected]>
paganotoni added a commit that referenced this pull request May 15, 2022
* feat: arm64 binary

* v6.0.2 (#704)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

* Export WhereID, Alias, WhereNamedID (#637)

This patch export some model convenience functions which are useful when constructing queries outside of pop: custom updates, deletes, inserts, ...

Signed-off-by: aeneasr <[email protected]>

Co-authored-by: Antonio Pagano <[email protected]>

* fix: log model values everywhere (#656)

Some SQL logs were missing the values as argument. This adds all places

* Add delete to query builder (#658)

This allows writing delete queries without knowing the exact primary key or for composite keys.
`Destroy` only allows to delete by primary key, but there are many cases where you want to delete multiple rows or by some other query than the ID.

See #29

* Sort down migrations (#657)

Basically, just reversing the up migration order does not work, as that puts "all" migrations before specific ones. Therefore, I added implemented the proper `Less` function for down migrations explicitly.

Related #533

Co-authored-by: hackerman <[email protected]>

* Preserve eager information when validating models (#664) (#665)

Co-authored-by: Karl Haas <[email protected]>

* Migrate from packr to fs (#667)

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* Migrate from packr to fs

* Migrate to v6

* Use old build tags

* Update error handling

* Fix error after rebase

* Fix error handling

* Fix filenames for embed Go 1.16 usage

Co-authored-by: Antonio Pagano <[email protected]>

* Task merging master (#669)

* v5.3.4 (#644)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* tidying

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

* Replace removed  command

The  command has been removed from the CLI. This patch introduces a new mechanism to reliably dump the SQL schema for CockroachDB.

* Resolve `EagerPreload` panic caused for pointer references

Resolves a panic where `EagerPreload` tried to set `reflect.Struct` for a `reflect.Pointer` on 1.. associations.

Signed-off-by: aeneasr <[email protected]>

* Resolve `EagerPreload` panic caused by NullUUID

Resolves a panic where `EagerPreload` was trying to set UUID into NullUUID.

Signed-off-by: aeneasr <[email protected]>

* Support pointers in n+1 `Eager` loading

Resolves an issue where n+1 eager associations would error with a double pointer in `associations.ForStruct`.

Signed-off-by: aeneasr <[email protected]>

* Improve error message of associations.ForStruct

Signed-off-by: aeneasr <[email protected]>

* Add test cases for `IsZeroOfUnderlyingType`

Signed-off-by: aeneasr <[email protected]>

* Resolve an obscure bug where empty structs got loaded for NULL foreign keys

Closes #139

Signed-off-by: aeneasr <[email protected]>

* Resolve association regression in finders.go

Signed-off-by: aeneasr <[email protected]>

* Use dedicated migrations for preloading regression test

Signed-off-by: aeneasr <[email protected]>

* Fix code regression

Signed-off-by: aeneasr <[email protected]>

* Fix test code regressions

Signed-off-by: aeneasr <[email protected]>

* Fix sql migration order

Signed-off-by: aeneasr <[email protected]>

* Resolve order issue in test

* Ignore order when testing for nil values in test

* Pass Context during exec in create. (#688)

* feat: support embedded struct fields (#691)

* test: use `T.TempDir` to create temporary test directory

This commit replaces `ioutil.TempDir` with `t.TempDir` in tests. The
directory created by `t.TempDir` is automatically removed when the test
and all its subtests complete.

Prior to this commit, temporary directory created using `ioutil.TempDir`
needs to be removed manually by calling `os.RemoveAll`, which is omitted
in some tests. The error handling boilerplate e.g.
	defer func() {
		if err := os.RemoveAll(dir); err != nil {
			t.Fatal(err)
		}
	}
is also tedious, but `t.TempDir` handles this for us nicely.

Reference: https://pkg.go.dev/testing#T.TempDir
Signed-off-by: Eng Zer Jun <[email protected]>

* task: adding next version number

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>
Co-authored-by: karlhaas <[email protected]>
Co-authored-by: Karl Haas <[email protected]>
Co-authored-by: Matthias Fasching <[email protected]>
Co-authored-by: Martin Eigenbrodt <[email protected]>
Co-authored-by: Eng Zer Jun <[email protected]>

* play time

* chore: updates

* chore: reset formatting

Co-authored-by: Antonio Pagano <[email protected]>
Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>
Co-authored-by: karlhaas <[email protected]>
Co-authored-by: Karl Haas <[email protected]>
Co-authored-by: Matthias Fasching <[email protected]>
Co-authored-by: Martin Eigenbrodt <[email protected]>
Co-authored-by: Eng Zer Jun <[email protected]>
paganotoni added a commit that referenced this pull request May 15, 2022
* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

* Export WhereID, Alias, WhereNamedID (#637)

This patch export some model convenience functions which are useful when constructing queries outside of pop: custom updates, deletes, inserts, ...

Signed-off-by: aeneasr <[email protected]>

Co-authored-by: Antonio Pagano <[email protected]>

* fix: log model values everywhere (#656)

Some SQL logs were missing the values as argument. This adds all places

* Add delete to query builder (#658)

This allows writing delete queries without knowing the exact primary key or for composite keys.
`Destroy` only allows to delete by primary key, but there are many cases where you want to delete multiple rows or by some other query than the ID.

See #29

* Sort down migrations (#657)

Basically, just reversing the up migration order does not work, as that puts "all" migrations before specific ones. Therefore, I added implemented the proper `Less` function for down migrations explicitly.

Related #533

Co-authored-by: hackerman <[email protected]>

* Preserve eager information when validating models (#664) (#665)

Co-authored-by: Karl Haas <[email protected]>

* Migrate from packr to fs (#667)

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* Migrate from packr to fs

* Migrate to v6

* Use old build tags

* Update error handling

* Fix error after rebase

* Fix error handling

* Fix filenames for embed Go 1.16 usage

Co-authored-by: Antonio Pagano <[email protected]>

* Task merging master (#669)

* v5.3.4 (#644)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* tidying

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

* Replace removed  command

The  command has been removed from the CLI. This patch introduces a new mechanism to reliably dump the SQL schema for CockroachDB.

* Resolve `EagerPreload` panic caused for pointer references

Resolves a panic where `EagerPreload` tried to set `reflect.Struct` for a `reflect.Pointer` on 1.. associations.

Signed-off-by: aeneasr <[email protected]>

* Resolve `EagerPreload` panic caused by NullUUID

Resolves a panic where `EagerPreload` was trying to set UUID into NullUUID.

Signed-off-by: aeneasr <[email protected]>

* Support pointers in n+1 `Eager` loading

Resolves an issue where n+1 eager associations would error with a double pointer in `associations.ForStruct`.

Signed-off-by: aeneasr <[email protected]>

* Improve error message of associations.ForStruct

Signed-off-by: aeneasr <[email protected]>

* Add test cases for `IsZeroOfUnderlyingType`

Signed-off-by: aeneasr <[email protected]>

* Resolve an obscure bug where empty structs got loaded for NULL foreign keys

Closes #139

Signed-off-by: aeneasr <[email protected]>

* Resolve association regression in finders.go

Signed-off-by: aeneasr <[email protected]>

* Use dedicated migrations for preloading regression test

Signed-off-by: aeneasr <[email protected]>

* Fix code regression

Signed-off-by: aeneasr <[email protected]>

* Fix test code regressions

Signed-off-by: aeneasr <[email protected]>

* Fix sql migration order

Signed-off-by: aeneasr <[email protected]>

* Resolve order issue in test

* Ignore order when testing for nil values in test

* Pass Context during exec in create. (#688)

* feat: support embedded struct fields (#691)

* test: use `T.TempDir` to create temporary test directory

This commit replaces `ioutil.TempDir` with `t.TempDir` in tests. The
directory created by `t.TempDir` is automatically removed when the test
and all its subtests complete.

Prior to this commit, temporary directory created using `ioutil.TempDir`
needs to be removed manually by calling `os.RemoveAll`, which is omitted
in some tests. The error handling boilerplate e.g.
	defer func() {
		if err := os.RemoveAll(dir); err != nil {
			t.Fatal(err)
		}
	}
is also tedious, but `t.TempDir` handles this for us nicely.

Reference: https://pkg.go.dev/testing#T.TempDir
Signed-off-by: Eng Zer Jun <[email protected]>

* task: adding next version number

* fix: associations for embedded fields

* test: add other fields to duplicate type, because of some kind of query builder cache

* feat: implement UpdateQuery

This commit introduces a new function, UpdateQuery, that enables updating all
rows matched by a query. It can be used for conditional updates.

* feat: allow customizing the time used for CreatedAt/UpdatedAt

* feat: allow using SQLite without built tag via include (#662)

* preparing go1.18 support (package specific workflow)

* feat: darwin arm64 binary (#690)

* feat: arm64 binary

* v6.0.2 (#704)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

* Export WhereID, Alias, WhereNamedID (#637)

This patch export some model convenience functions which are useful when constructing queries outside of pop: custom updates, deletes, inserts, ...

Signed-off-by: aeneasr <[email protected]>

Co-authored-by: Antonio Pagano <[email protected]>

* fix: log model values everywhere (#656)

Some SQL logs were missing the values as argument. This adds all places

* Add delete to query builder (#658)

This allows writing delete queries without knowing the exact primary key or for composite keys.
`Destroy` only allows to delete by primary key, but there are many cases where you want to delete multiple rows or by some other query than the ID.

See #29

* Sort down migrations (#657)

Basically, just reversing the up migration order does not work, as that puts "all" migrations before specific ones. Therefore, I added implemented the proper `Less` function for down migrations explicitly.

Related #533

Co-authored-by: hackerman <[email protected]>

* Preserve eager information when validating models (#664) (#665)

Co-authored-by: Karl Haas <[email protected]>

* Migrate from packr to fs (#667)

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* Migrate from packr to fs

* Migrate to v6

* Use old build tags

* Update error handling

* Fix error after rebase

* Fix error handling

* Fix filenames for embed Go 1.16 usage

Co-authored-by: Antonio Pagano <[email protected]>

* Task merging master (#669)

* v5.3.4 (#644)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* tidying

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

* Replace removed  command

The  command has been removed from the CLI. This patch introduces a new mechanism to reliably dump the SQL schema for CockroachDB.

* Resolve `EagerPreload` panic caused for pointer references

Resolves a panic where `EagerPreload` tried to set `reflect.Struct` for a `reflect.Pointer` on 1.. associations.

Signed-off-by: aeneasr <[email protected]>

* Resolve `EagerPreload` panic caused by NullUUID

Resolves a panic where `EagerPreload` was trying to set UUID into NullUUID.

Signed-off-by: aeneasr <[email protected]>

* Support pointers in n+1 `Eager` loading

Resolves an issue where n+1 eager associations would error with a double pointer in `associations.ForStruct`.

Signed-off-by: aeneasr <[email protected]>

* Improve error message of associations.ForStruct

Signed-off-by: aeneasr <[email protected]>

* Add test cases for `IsZeroOfUnderlyingType`

Signed-off-by: aeneasr <[email protected]>

* Resolve an obscure bug where empty structs got loaded for NULL foreign keys

Closes #139

Signed-off-by: aeneasr <[email protected]>

* Resolve association regression in finders.go

Signed-off-by: aeneasr <[email protected]>

* Use dedicated migrations for preloading regression test

Signed-off-by: aeneasr <[email protected]>

* Fix code regression

Signed-off-by: aeneasr <[email protected]>

* Fix test code regressions

Signed-off-by: aeneasr <[email protected]>

* Fix sql migration order

Signed-off-by: aeneasr <[email protected]>

* Resolve order issue in test

* Ignore order when testing for nil values in test

* Pass Context during exec in create. (#688)

* feat: support embedded struct fields (#691)

* test: use `T.TempDir` to create temporary test directory

This commit replaces `ioutil.TempDir` with `t.TempDir` in tests. The
directory created by `t.TempDir` is automatically removed when the test
and all its subtests complete.

Prior to this commit, temporary directory created using `ioutil.TempDir`
needs to be removed manually by calling `os.RemoveAll`, which is omitted
in some tests. The error handling boilerplate e.g.
	defer func() {
		if err := os.RemoveAll(dir); err != nil {
			t.Fatal(err)
		}
	}
is also tedious, but `t.TempDir` handles this for us nicely.

Reference: https://pkg.go.dev/testing#T.TempDir
Signed-off-by: Eng Zer Jun <[email protected]>

* task: adding next version number

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>
Co-authored-by: karlhaas <[email protected]>
Co-authored-by: Karl Haas <[email protected]>
Co-authored-by: Matthias Fasching <[email protected]>
Co-authored-by: Martin Eigenbrodt <[email protected]>
Co-authored-by: Eng Zer Jun <[email protected]>

* play time

* chore: updates

* chore: reset formatting

Co-authored-by: Antonio Pagano <[email protected]>
Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>
Co-authored-by: karlhaas <[email protected]>
Co-authored-by: Karl Haas <[email protected]>
Co-authored-by: Matthias Fasching <[email protected]>
Co-authored-by: Martin Eigenbrodt <[email protected]>
Co-authored-by: Eng Zer Jun <[email protected]>

* task: adding release-env in the gitignore

* task: its release-env

* task: adding .release-env to the release-dry-run make

* task: changing the order of release steps

* task:changing the token

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>
Co-authored-by: karlhaas <[email protected]>
Co-authored-by: Karl Haas <[email protected]>
Co-authored-by: Matthias Fasching <[email protected]>
Co-authored-by: Martin Eigenbrodt <[email protected]>
Co-authored-by: Eng Zer Jun <[email protected]>
Co-authored-by: Grant Zvolsky <[email protected]>
Co-authored-by: Andrew Hobson <[email protected]>
Co-authored-by: Yonghwan SO <[email protected]>
Co-authored-by: Joey Freeland <[email protected]>
paganotoni added a commit that referenced this pull request May 27, 2022
* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

* Export WhereID, Alias, WhereNamedID (#637)

This patch export some model convenience functions which are useful when constructing queries outside of pop: custom updates, deletes, inserts, ...

Signed-off-by: aeneasr <[email protected]>

Co-authored-by: Antonio Pagano <[email protected]>

* fix: log model values everywhere (#656)

Some SQL logs were missing the values as argument. This adds all places

* Add delete to query builder (#658)

This allows writing delete queries without knowing the exact primary key or for composite keys.
`Destroy` only allows to delete by primary key, but there are many cases where you want to delete multiple rows or by some other query than the ID.

See #29

* Sort down migrations (#657)

Basically, just reversing the up migration order does not work, as that puts "all" migrations before specific ones. Therefore, I added implemented the proper `Less` function for down migrations explicitly.

Related #533

Co-authored-by: hackerman <[email protected]>

* Preserve eager information when validating models (#664) (#665)

Co-authored-by: Karl Haas <[email protected]>

* Migrate from packr to fs (#667)

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* Migrate from packr to fs

* Migrate to v6

* Use old build tags

* Update error handling

* Fix error after rebase

* Fix error handling

* Fix filenames for embed Go 1.16 usage

Co-authored-by: Antonio Pagano <[email protected]>

* Task merging master (#669)

* v5.3.4 (#644)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* tidying

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

* Replace removed  command

The  command has been removed from the CLI. This patch introduces a new mechanism to reliably dump the SQL schema for CockroachDB.

* Resolve `EagerPreload` panic caused for pointer references

Resolves a panic where `EagerPreload` tried to set `reflect.Struct` for a `reflect.Pointer` on 1.. associations.

Signed-off-by: aeneasr <[email protected]>

* Resolve `EagerPreload` panic caused by NullUUID

Resolves a panic where `EagerPreload` was trying to set UUID into NullUUID.

Signed-off-by: aeneasr <[email protected]>

* Support pointers in n+1 `Eager` loading

Resolves an issue where n+1 eager associations would error with a double pointer in `associations.ForStruct`.

Signed-off-by: aeneasr <[email protected]>

* Improve error message of associations.ForStruct

Signed-off-by: aeneasr <[email protected]>

* Add test cases for `IsZeroOfUnderlyingType`

Signed-off-by: aeneasr <[email protected]>

* Resolve an obscure bug where empty structs got loaded for NULL foreign keys

Closes #139

Signed-off-by: aeneasr <[email protected]>

* Resolve association regression in finders.go

Signed-off-by: aeneasr <[email protected]>

* Use dedicated migrations for preloading regression test

Signed-off-by: aeneasr <[email protected]>

* Fix code regression

Signed-off-by: aeneasr <[email protected]>

* Fix test code regressions

Signed-off-by: aeneasr <[email protected]>

* Fix sql migration order

Signed-off-by: aeneasr <[email protected]>

* Resolve order issue in test

* Ignore order when testing for nil values in test

* Pass Context during exec in create. (#688)

* feat: support embedded struct fields (#691)

* test: use `T.TempDir` to create temporary test directory

This commit replaces `ioutil.TempDir` with `t.TempDir` in tests. The
directory created by `t.TempDir` is automatically removed when the test
and all its subtests complete.

Prior to this commit, temporary directory created using `ioutil.TempDir`
needs to be removed manually by calling `os.RemoveAll`, which is omitted
in some tests. The error handling boilerplate e.g.
	defer func() {
		if err := os.RemoveAll(dir); err != nil {
			t.Fatal(err)
		}
	}
is also tedious, but `t.TempDir` handles this for us nicely.

Reference: https://pkg.go.dev/testing#T.TempDir
Signed-off-by: Eng Zer Jun <[email protected]>

* task: adding next version number

* fix: associations for embedded fields

* test: add other fields to duplicate type, because of some kind of query builder cache

* feat: implement UpdateQuery

This commit introduces a new function, UpdateQuery, that enables updating all
rows matched by a query. It can be used for conditional updates.

* feat: allow customizing the time used for CreatedAt/UpdatedAt

* feat: allow using SQLite without built tag via include (#662)

* preparing go1.18 support (package specific workflow)

* feat: darwin arm64 binary (#690)

* feat: arm64 binary

* v6.0.2 (#704)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

* Export WhereID, Alias, WhereNamedID (#637)

This patch export some model convenience functions which are useful when constructing queries outside of pop: custom updates, deletes, inserts, ...

Signed-off-by: aeneasr <[email protected]>

Co-authored-by: Antonio Pagano <[email protected]>

* fix: log model values everywhere (#656)

Some SQL logs were missing the values as argument. This adds all places

* Add delete to query builder (#658)

This allows writing delete queries without knowing the exact primary key or for composite keys.
`Destroy` only allows to delete by primary key, but there are many cases where you want to delete multiple rows or by some other query than the ID.

See #29

* Sort down migrations (#657)

Basically, just reversing the up migration order does not work, as that puts "all" migrations before specific ones. Therefore, I added implemented the proper `Less` function for down migrations explicitly.

Related #533

Co-authored-by: hackerman <[email protected]>

* Preserve eager information when validating models (#664) (#665)

Co-authored-by: Karl Haas <[email protected]>

* Migrate from packr to fs (#667)

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* Migrate from packr to fs

* Migrate to v6

* Use old build tags

* Update error handling

* Fix error after rebase

* Fix error handling

* Fix filenames for embed Go 1.16 usage

Co-authored-by: Antonio Pagano <[email protected]>

* Task merging master (#669)

* v5.3.4 (#644)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Latest from master (#620)

* Latest from development (#617)

* fix: improve model ID field customization (#604)

Updates places where `"id"` was hardcoded instead of using `model.IDField()`.

* Ensure uninitialized map is initialized when unmarshaling json
Add tests for this scenario

* exclude migration_table_name from connection string

* add test for OptionsString

* Add support for pointer FKs when preloading a belongs_to association (#602)

* feat: support context-aware tablenames (#614)

This patch adds a feature which enables pop to pass down the connection context to the model's TableName() function by implementing TableName(ctx context.Context) string. The context can be used to dynamically generate tablenames which can be important for prefixed or generic tables and other use cases.

* Bump pg deps (#616)

* Reset to development

* bumping pgx and pgconn versions

Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* adding goreleaser syntaz (#619)

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>

* Resolve issues in UPDATE and DELETE when using schemas (#618)

* Resolve MySQL issues and improve test migrations
* Bump CockroachDB to maintained and supported versions
Version 2.1 has reached EoL in 2019

Signed-off-by: aeneasr <[email protected]>

* Use `PaginatorPageKey` and `PaginatorPerPageKey` variables (#615)

* update pagination_test

* Pass Time structure into timestamp update functions. (#625)

Closes #624

* Allow nullable JSONB and resolve MySQL regression (#639)

* Allow passing args to `Order` (#630)

* Added connection maximum idle time configuration (#635)

This PR add the possibility to configure the connection maximum idle time (https://golang.org/pkg/database/sql/#DB.SetConnMaxIdleTime).

Closes #632

BREAKING CHANGE: Requires Go 1.15 from now on.

* Bump sqlite to 3.35.4 / 1.14.7 (#642)

* Update pg, pgx, sqlx (#643)

- `jackc/pgx` to  version `v4.11.0`.
- `jmoiron/sqlx` to version`v1.3.3`
- `lib/pq` to version`v1.10.1`

* Fix Inner has many associations when passing on multiple arguments (#633)

* Fix Inner has many associations when passing on multiple arguments for inner fields

* Fix broken tests

* clean up extractFieldAndInnerFields function

Co-authored-by: hackerman <[email protected]>
Co-authored-by: Antonio Pagano <[email protected]>

* Remove many to many TX condition for EagerPreload (#645)

* Remove the need to use Tx when loading many to many associations

* replace TX access to create a new tx.Store.Transaction() object

* Added fix/tests for has_many with pointer foreign key (#647)

Co-authored-by: Antonio Pagano <[email protected]>

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

* Updating Pgx (#660)

* adding goreleaser syntaz

* updating pgx now really

* tidying

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>

* Replace removed  command

The  command has been removed from the CLI. This patch introduces a new mechanism to reliably dump the SQL schema for CockroachDB.

* Resolve `EagerPreload` panic caused for pointer references

Resolves a panic where `EagerPreload` tried to set `reflect.Struct` for a `reflect.Pointer` on 1.. associations.

Signed-off-by: aeneasr <[email protected]>

* Resolve `EagerPreload` panic caused by NullUUID

Resolves a panic where `EagerPreload` was trying to set UUID into NullUUID.

Signed-off-by: aeneasr <[email protected]>

* Support pointers in n+1 `Eager` loading

Resolves an issue where n+1 eager associations would error with a double pointer in `associations.ForStruct`.

Signed-off-by: aeneasr <[email protected]>

* Improve error message of associations.ForStruct

Signed-off-by: aeneasr <[email protected]>

* Add test cases for `IsZeroOfUnderlyingType`

Signed-off-by: aeneasr <[email protected]>

* Resolve an obscure bug where empty structs got loaded for NULL foreign keys

Closes #139

Signed-off-by: aeneasr <[email protected]>

* Resolve association regression in finders.go

Signed-off-by: aeneasr <[email protected]>

* Use dedicated migrations for preloading regression test

Signed-off-by: aeneasr <[email protected]>

* Fix code regression

Signed-off-by: aeneasr <[email protected]>

* Fix test code regressions

Signed-off-by: aeneasr <[email protected]>

* Fix sql migration order

Signed-off-by: aeneasr <[email protected]>

* Resolve order issue in test

* Ignore order when testing for nil values in test

* Pass Context during exec in create. (#688)

* feat: support embedded struct fields (#691)

* test: use `T.TempDir` to create temporary test directory

This commit replaces `ioutil.TempDir` with `t.TempDir` in tests. The
directory created by `t.TempDir` is automatically removed when the test
and all its subtests complete.

Prior to this commit, temporary directory created using `ioutil.TempDir`
needs to be removed manually by calling `os.RemoveAll`, which is omitted
in some tests. The error handling boilerplate e.g.
	defer func() {
		if err := os.RemoveAll(dir); err != nil {
			t.Fatal(err)
		}
	}
is also tedious, but `t.TempDir` handles this for us nicely.

Reference: https://pkg.go.dev/testing#T.TempDir
Signed-off-by: Eng Zer Jun <[email protected]>

* task: adding next version number

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>
Co-authored-by: karlhaas <[email protected]>
Co-authored-by: Karl Haas <[email protected]>
Co-authored-by: Matthias Fasching <[email protected]>
Co-authored-by: Martin Eigenbrodt <[email protected]>
Co-authored-by: Eng Zer Jun <[email protected]>

* play time

* chore: updates

* chore: reset formatting

Co-authored-by: Antonio Pagano <[email protected]>
Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>
Co-authored-by: karlhaas <[email protected]>
Co-authored-by: Karl Haas <[email protected]>
Co-authored-by: Matthias Fasching <[email protected]>
Co-authored-by: Martin Eigenbrodt <[email protected]>
Co-authored-by: Eng Zer Jun <[email protected]>

* task: adding release-env in the gitignore

* task: its release-env

* task: adding .release-env to the release-dry-run make

* task: changing the order of release steps

* task:changing the token

* feature: supporting sqlite :memory: and mode=memory on the sqlite driver (#717)

* feat: expose connection transactions with context and options

* task: adding vscode to the ignore list

Co-authored-by: Patrik <[email protected]>
Co-authored-by: Michael Montgomery <[email protected]>
Co-authored-by: kyrozetera <[email protected]>
Co-authored-by: Reggie Riser <[email protected]>
Co-authored-by: hackerman <[email protected]>
Co-authored-by: Stanislas Michalak <[email protected]>
Co-authored-by: Larry M Jordan <[email protected]>
Co-authored-by: Brian Buchholz <[email protected]>
Co-authored-by: Mike Pontillo <[email protected]>
Co-authored-by: Benjamin Blattberg <[email protected]>
Co-authored-by: Jonathan Duck <[email protected]>
Co-authored-by: Arthur Knoepflin <[email protected]>
Co-authored-by: karlhaas <[email protected]>
Co-authored-by: Karl Haas <[email protected]>
Co-authored-by: Matthias Fasching <[email protected]>
Co-authored-by: Martin Eigenbrodt <[email protected]>
Co-authored-by: Eng Zer Jun <[email protected]>
Co-authored-by: Grant Zvolsky <[email protected]>
Co-authored-by: Andrew Hobson <[email protected]>
Co-authored-by: Yonghwan SO <[email protected]>
Co-authored-by: Joey Freeland <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants