aembke / fred.rs

An async Redis client for Rust.
Apache License 2.0
380 stars 61 forks source link

[Feature]Grouping modules #304

Open ArtemIsmagilov opened 2 hours ago

ArtemIsmagilov commented 2 hours ago

Describe the solution you'd like I would like to suggest regrouping modules, tests and other components into groups.

I think it will be easier to navigate the commands and write tests. The documentation already indicates a clear separation.

What is my problem? For example, I want to add the ECHO command and ACL DRYRUN. Looking at the documentation, I see that they belong to the Connection group. Great, tests and functionality can be written side by side and know that they correspond. But in this library, ACL commands belong to the acl module and the ECHO command to connection. I will say right away that the existing version is elegant enough to be divided into entities. However, I suggest reworking it in the following way.

Rename the modules to src/commands/impls/connection_group.rs and src/commands/interfaces/connection_group.rs with grouping other commands acl, client... By analogy, also tests and Cargo configuration.

It may seem like a lot of work and the result is small. I think that the corresponding division according to official canons allowed not to confuse also in traits, and in teams, and in tests. Plus to this we know for sure that no team exists outside the group/category for both redis and valkey

It would be great to group traits like this. For example, you have separate traits Client, ACL, AUTH. I suggest combining them into one trait called ConnectionCategory/ConnectionInterface in accordance with the documentation.

It would be cool to know your opinion on this proposal, with respect, Artem)

Additional context

Command Categories auth trait client trait acl trait

ArtemIsmagilov commented 2 hours ago

I spent a lot of time to figure out where it is better to add what. This adjustment is absolutely necessary.