Comments (6)
Cool...
You can open PR for that.
from faker.
My solution is not practical and not very clean.
I checked the current implementation of the lib and such change would require significant changes to the lib's code base, and likely break backwards compatibility.
I'd like to discuss the possibilities before opening a PR. You may not be ok with the proposed change.
I thought of two possibilities to implement it:
- Change to an interface-based design, meaning that we would need to create a faker object before faking. That would let us keep the generated values in memory and limit the changes the developers would need to do to upgrade to the new version.
- Add a
FakerContext
parameter toFakeData
function. TheFakerContext
would be a struct holding the generated data for uniqueness. This would require more changes for the developer but less changes to the code base.
from faker.
How about the second solution, but you create a new function that accepts the context.
Let say: FakeUniqueData
, and behind of it we use the same function that FakeData
has.
We don't have too break the API for the old version. But, I don't know if this possible to do?? 🤔
from faker.
The first solution also acceptable. As long as we make it not breakings the backward compatibility
from faker.
I thought about another easier solution: add a global map[string][]interface{}
of remembered unique values and a function to reset it. The map keys would be the type of generated data (using the tag names)
This solution wouldn't break backward compatibility and wouldn't require any change for developers to upgrade to the new version. I will try to implement that and open a PR.
from faker.
resolved by #77
from faker.
Related Issues (20)
- Hangs up for large struct
- Feat: Generate string from regular expression
- Facebook account
- boundary_start and boundary_end for Date fields?
- Prefix and Suffix for fake string?
- Nullable pointer
- Oneof don't work with *int HOT 3
- support custom random sources
- Correct RandomInt function
- Max depth parameter
- Please add (again) support for custom random sources HOT 1
- Oneof support for alias types? HOT 2
- Tag unsupported: boundary_start=31,boundary_end=88 HOT 2
- Is bitcoin address supported? HOT 1
- `slice_len` only works for `string`
- Compatibility with go 1.18 HOT 2
- Make possible to ignore some fields or provide custom generators HOT 2
- Is there a way to make generated data optional? HOT 1
- fix panic on using map with value of aliased type
- Custom Data Make
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 faker.