Comments (6)
I'm breaking this into some different tasks:
- Add ability to query releases
- Add ability to query prereleases
- Add ability to load release from prereleases (this is likely fast enough that I should always eager load)
- Add ability to load the prereleases from the release (this is likely fast enough that I should always eager load)
- Add ability to query changes
- Add ability to load release from changes (this is likely fast enough that it should always eager load)
- Add ability to load prerelease from changes (this should be fast enough that it should always eager load)
- Add ability to load changes from release (this should lazy load and give option to eager load. Is there an easy way to force people to specify eager loading this?)
- If you always eager load, I don't have performance penalties for reading the same file twice when processing a query
- Add ability to load changes from prerelease (this should lazy load and give option to eager load. Is there an easy way to force people to specify eager loading this?)
- If you always eager load, I don't have performance penalties for reading the same file twice when processing a query
from changes.
Should consider speed improvements by not spawning more queues/threads than necessary and consider using locks or DispatchQueue.concurrentPerform over concurrent queue + barrier
references:
- https://gist.github.com/tclementdev/6af616354912b0347cdf6db159c37057
- https://discord.com/channels/431917998102675485/443204563374178324/795757293865402378
- https://discord.com/channels/431917998102675485/499822537027616768/804435575301865562
from changes.
Notes for myself: The query API I want to make kind of like an ORM. Release.where(...).all()
, etc.
Same with adding entries. Should take inspiration from things like GRDB and Fluent
from changes.
Reminding myself I should spend some extra time making sure I add tests, and only useful tests that test inputs and outputs.
I think this should be both unit and if possible integration tests
from changes.
A lot of these tests are going to involve mocking out the file system. I'd like if I could build a fake file system in the tests easily like
let mockFolder = MockFolder(name: ".changes") {
MockFolder(name: "unreleased") {
MockFolder(name: "entries") {
MockFile(name: "blah.json")
.data(data)
}
}
MockFolder(name: "releases") {
...
}
}
from changes.
Note fr myself: I should go back through and make sure my naming for the folders in my unit tests make sense. Like what is the "working" file and what is the "changes" file, etc. Are those clear am I using them consistently?
from changes.
Related Issues (20)
- Use swiftenv for macOS github workflow
- Build changelog with Stencil HOT 2
- Name changes files by id and add id field HOT 1
- Build README with stencil HOT 1
- How to avoid interactive mode on CI HOT 3
- Add ability to query Changs by id HOT 1
- Automate linux docker image names
- Should this library allow tracing?
- All printing should to go stderr
- Polish help commands
- Display query output in human readable format
- Put queries under `query` subcommand HOT 1
- Output on success for non-query commands
- Review possible files errors and provide helpful output for common errors HOT 1
- Relocate config file?
- Upgrade to Swift 5.5 & Async/Await HOT 1
- Add apiVersion to changes config and changes files
- How do we handle multiple release builds and versions in the same repo? HOT 2
- Should releases be a part of this project? HOT 2
- Create some way to add files with changes 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 changes.