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

Golang Client Setup #56

Open
4 of 10 tasks
Iamdavidonuh opened this issue Jul 5, 2024 · 0 comments
Open
4 of 10 tasks

Golang Client Setup #56

Iamdavidonuh opened this issue Jul 5, 2024 · 0 comments

Comments

@Iamdavidonuh
Copy link
Collaborator

Iamdavidonuh commented Jul 5, 2024

To create the Golang client, please check out the python and Rust clients to understand Pipelining and Ahnlich Message Protocol

Tasks

  • Generate Golang types from the type specs, this holds type definitions that are fundamental to how our TCP communication work. Checkout README on how to generate language definitions.

  • Should include an ai and db module as the client can be used to talk to the ai proxy or talk to the DB directly
    It might include integration tests for the DB and AI modules.

  • Implement the Ahnlich Messaging protocol, that ensures proper message serialization and deserialization.

  • Given that we will introduce an AI layer, we want the client to cater to both, so for now, requests should be separated into AI and db modules. This is because later on, we will be generating some specific types and bindings

  • To establish TCP connections, A user should be able to define a database host and port to connect. We should then be able to provide them with pooling abstractions, where the user can select the maximum number of connections to open in a pool at once.

  • We would abstract away pipelining i.e. where we build and send multiple requests at once using a TCP connection from the pool

  • Add a proper README and Documentation for Godoc to the Golang client.

  • Badge on main README showing Golang client version

  • Setup CI/CD pipeline to run Golang integration tests, and Test deploy(using dry run) for package and set up a pipeline to deploy whenever ready. Look at existing workflows for rust and python clients for help

  • Enforce a golang format check on the CI/CD pipeline

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant