Comments (4)
from golang-set.
@ScreamingHawk - circling back on this seems like this would be a fairly large breaking change. I understand what your concern is but I do feel like this would possibly complicate the API. I'm still thinking about it.
from golang-set.
Hello,
Thanks for the recommendation! I'm certainly not opposed to changes that would be considered general enough that others would find useful and if you have an API in mind I'd love to hear more details.
This package is so widely used it would be help to get more context and allow others to chime in.
from golang-set.
Here's some pseudo code for the pattern I've got. Please forgive errors.
type Entity struct {
ID uint64
Data1 string
Data2 bool
// ...
UpdatedAt *time.Time
}
func Update(apiEntities []*Entity) error {
dbEntities = db.ListEntities()
origSet := mapset.NewSet(dbEntities...)
updateSet := mapset.NewSet(apiEntities...)
added := updateSet.Difference(origSet)
// Process newly added entries
removed := origSet.Difference(updateSet)
// Process deleted entries
}
Entity
's that come in via the API don't have an ID populated, this causes all data to not match.
Also in this case UpdatedAt
should be ignored when looking for equality.
If we could pass a function to do the comparison, that would be a nice general solution.
Something like:
func entityEqual(a Entity, b Entity) bool {
// Whatever logic here
return a.Data1 == b.Data1 && a.Data2 == b.Data2
}
func Update(apiEntities []*Entity) error {
// ...
added := updateSet.Difference(origSet, entityEqual)
// ...
}
from golang-set.
Related Issues (20)
- Feature request: Support for immutable sets HOT 1
- [Q] How to print the contents of a Set? HOT 1
- Getting error when instantiating a set: "invalid operation: cannot index mapset.NewSet (value of type func(s ...interface{}) mapset.Set)" HOT 6
- No installation guide
- [Question] Contains() parameters escape to heap HOT 4
- How I can get every elements in my set? HOT 2
- Unmarshalling threadUnsafeSet with json.Unmarshal panics HOT 7
- Document thread-safe set usage HOT 1
- Issue: Contains HOT 2
- [Question] Why isn't `defer` used? HOT 6
- Non-mutating helpers to add/remove HOT 2
- Guidance/suggestions on Iterators and Stop() HOT 5
- Add a way to distinguish thread safe and unsafe sets HOT 3
- Is there any method to know whether a set is empty? HOT 2
- unmarshal json fails when set is part of struct HOT 2
- Suggestion: option to restrict comparable to only exported values. HOT 1
- why isn't there a `mapset.NewSetFromSlice` method? HOT 1
- Allow capacity to be specified when initializing a Set HOT 2
- Support 1.23 iterator for set HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from golang-set.