-
Notifications
You must be signed in to change notification settings - Fork 43
refactor!: restructure project for better DX and UX #267
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
base: master
Are you sure you want to change the base?
Conversation
b4c9158 to
1ffa3bf
Compare
|
FWIW, I had copilot agent analyze and propose a solution to transactional edits to the database. It also proposed a JSON & API based method for these transactions. This was a thought project on how we could implement immutable database/group/entry sharing in KeePassXC and move all editing into a centralized place. droidmonkey/keepassxc#6 |
Controlled mutable access via |
4017d26 to
4876936
Compare
Especially, the Times struct can never have other values than the hardcoded ones.
Have just one user-facing Attachment type, with the parsers handling the translation of different ways to specify attachments into this type.
7d75de4 to
6563f11
Compare
f9b25f4 to
d08bb0f
Compare
This mega-PR is not intended to be merged, but to inform and get feedback from everyone. I want to explore a new design for this crate that hopefully is cleaner, plus easier to use, understand, and extend.
@louib @varjolintu @droidmonkey I would appreciate suggestions on how to break down this PR into several smaller PRs that can be reviewed individually.
keepass::dbusing nestedGroupstructs with a flat design that storesGroups,Entrys,BinaryAttachments in theDatabaseGroupId(Uuid)) to refer to the internal objectsGroupRefandGroupMut) to safely and conveniently expose database state, while enforcing internal consistency.keepass::errorwith module-local, more granular error enums that#[derive(thiserror::Error)]quick-xmlwithserde(de)serialization of XML instead ofxml-rsevent-based parsingBREAKING CHANGE: Different database types and how they are accessed. Removes the
Node,NodeRef, etc concepts.BREAKING CHANGE: Completely replaced error types to make them more granular