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

docs: klip-62: Ruby client #8865

Merged
merged 8 commits into from
Jun 15, 2022

Conversation

LapoElisacci
Copy link
Contributor

Description

We want to develop a Ruby client to interact with KsqlDB.
The first step would be to map the ksqlDB REST API Endpoints to HTTP2 Client methods.
A further improvement would be to develop an ORM to dynamically build the SQL string to be sent to the API.

Testing done

Describe the testing strategy. Unit and integration tests are expected for any behavior changes.

Reviewer checklist

  • Ensure docs are updated if necessary. (eg. if a user visible feature is being added or changed).
  • Ensure relevant issues are linked (description should include text like "Fixes #")

Copy link
Member

@cprasad1 cprasad1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @LapoElisacci ! a few comments

design-proposals/README.md Outdated Show resolved Hide resolved
design-proposals/README.md Outdated Show resolved Hide resolved
design-proposals/klip-62-ksqldb-ruby-client.md Outdated Show resolved Hide resolved
design-proposals/klip-62-ksqldb-ruby-client.md Outdated Show resolved Hide resolved
## What is in scope

* A lightweight but complete and configurable Ruby client.
* Support for both synchronous and asynchronous queries.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

instead of sync + async queries, we can point out the types of queries (persistent, transient, pull) and if we want to provide sync+async versions of all of them


## Public APIS

N/A
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should explicitly point out the APIs for the clients that we want to expose here. For eg: executeQuery() for batch results, streamQuery() for streaming results etc. The reference for the java client is here https://docs.ksqldb.io/en/latest/developer-guide/ksqldb-clients/java-client/

Comment on lines 40 to 41
Both unit and integration tests.
All currenlty available ksqlDB statements will get properly tested.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LapoElisacci it will be helpful to elaborate a bit on the kinds of statements that we want to test. This will help to sanity check if we are covering the domain of the ksqlDB queries that we are interested in. Some classes of queries that come to mind:

  • Persistent queries: CSAS, CTAS etc.

  • Transient Queries: Push queries

  • Pull Queries: Over streams and tables.

Comment on lines 40 to 41
Both unit and integration tests.
All currenlty available ksqlDB statements will get properly tested.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LapoElisacci it will be helpful to elaborate a bit on the kinds of statements that we want to test. This will help to sanity check if we are covering the domain of the ksqlDB queries that we are interested in. Some classes of queries that come to mind:

  • Persistent queries: CSAS, CTAS etc.

  • Transient Queries: Push queries

  • Pull Queries: Over streams and tables.


## LOEs and Delivery Milestones

TBD
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you have an LOE in mind right now? It will be helpful to break the implementation down into several chunks. We can start off with queries that can be returned in a batched result (pull queries and push queries with a LIMIT clause). Then we can target steaming queries (general push queries) and persistent queries after that as an example.


## LOEs and Delivery Milestones

TBD
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you have an LOE in mind right now? It will be helpful to break the implementation down into several chunks. We can start off with queries that can be returned in a batched result (pull queries and push queries with a LIMIT clause). Then we can target steaming queries (general push queries) and persistent queries after that as an example.

@cprasad1
Copy link
Member

cc @AlanConfluent

@LapoElisacci
Copy link
Contributor Author

Hey @cprasad1 @AlanConfluent, I've updated the KLIP with some other details, let me know if you need something else to be further clarified.

The Gem beta code is available here https://github.com/LapoElisacci/Ksql, most of the endpoints have already been covered.
Tests are yet to come.

Thanks

@LapoElisacci
Copy link
Contributor Author

Hi @cprasad1, any updates on this one?

I've covered with tests and released the Gem, you can find it on Github

https://github.com/LapoElisacci/Ksql

as well as on RubyGems

https://rubygems.org/gems/ksql

@cprasad1 cprasad1 merged commit e9ecd72 into confluentinc:master Jun 15, 2022
@cprasad1
Copy link
Member

Thanks @LapoElisacci ! Thanks for the contribution. I have merged the klip

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

Successfully merging this pull request may close these issues.

2 participants