Skip to content
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

Implement Fluent Method Chaining for Status and Type Methods Using Generics #3221

Open
coderabbitai bot opened this issue Nov 29, 2024 · 0 comments
Open
Milestone

Comments

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 29, 2024

We propose implementing the fluent concept for the methods Status and Type in the Fiber framework using generics, as discussed in the following articles:

Background:

Using generics allows for method chaining by having methods return a generic interface type, similar to the self keyword in other languages. Since Go does not have a self keyword, generics provide a feasible alternative without significant language changes.

Proposal:

  • Modify the Context Interface:

  • Change methods like Status and Type to return a generic interface instead of a concrete type.

  • This enables fluent method chaining while maintaining type safety and flexibility.

  • Implement a Generic Ctx Interface on App:

    • To prevent class switching when registering a custom context that uses fluent methods, implement a generic interface for Ctx on the App.
  • Provide Multiple New Methods:

    • Offer additional constructor methods so developers who do not need a custom context can continue using fiber.New without any changes.
    • Provide alternative constructors for those who wish to customize the context.

Benefits:

  • Maintains ease of use for existing users.
  • Enhances flexibility for developers requiring custom contexts.
  • Utilizes Go's generics feature introduced in 1.18 for improved design patterns.

References:

Requested by: @ReneWerner87

@ReneWerner87 ReneWerner87 added this to v3 Nov 29, 2024
@ReneWerner87 ReneWerner87 added this to the v3 milestone Nov 29, 2024
@ReneWerner87 ReneWerner87 moved this to Todo in v3 Nov 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Todo
Development

No branches or pull requests

1 participant