Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a hash function to models which contain a primary key relation.
We know that a primary key does indeed offer a unique identifier for the row, and a concat of the primary key fields can thus be used to create a unique string identifying the row.
A use case for this would be the following.
Consider a select on the join of 2 tables, A and B.
In the resulting sequence of tuples, multiple instances of a row of either A or B can be present, as they match multiple times on their counterpart.
The most pythonic way to then retrieve the unique instances / rows of either A or B in the result set would be as follows.
This is currently not possible as the SQLModel class, and the underlying pydantic BaseModel are unhashable.
However, I propose that a SQLModel with properly defined primary keys IS actually hashable, as the primary key defines a unique, hashable property.
This would be in line with the underlying database, as some hash is ofcourse also used in the backend to identify this uniqueness.