tigrisdata-archive / tigris-client-go

Tigris data-platform Golang client
https://www.tigrisdata.com/docs/sdkstools/golang/
Apache License 2.0
17 stars 5 forks source link

Atomic numeric update operations support in Go Client (increment/decrement/multiply/divide) #236

Closed himank closed 1 year ago

ovaistariq commented 1 year ago

/bounty $25

algora-pbc[bot] commented 1 year ago

💎 $25.00 bounty created by ovaistariq 🙋‍♂️ If you'd like to solve this issue, comment below to get assigned 👉 To claim this bounty, submit a pull request that includes the text /claim #236 somewhere in its body 📝 Before proceeding, please make sure you can receive payouts in your country 💵 Payment arrives in your account 2-5 days after the bounty is rewarded 💯 You keep 100% of the bounty award 🙏 Thank you for contributing to tigrisdata/tigris-client-go!

Shubham8287 commented 1 year ago

I would love to work on this. If no one is working on it, Can I get assigned to this :). I already have the local setup and high level understanding of codebases.

Also, Can you provide more details what exactly needs to be done? I can found the listed operators in TS sdk, do we need to implement same in golang SDK? - https://www.tigrisdata.com/docs/sdkstools/typescript/database/update/#increment-a-field-value

ovaistariq commented 1 year ago

@Shubham8287 Sure, go ahead and take this one :) Yes, please implement similar to TS SDK.

Shubham8287 commented 1 year ago

@efirs @ovaistariq I read some code to get started on the task, I tried to find server interface to send update request to server. I think all I need do is to set "field" of "UpdateRequest" to byte arrays like {"$divide":{"rating":2.34} or '{"$increment":{"publisher.totalPublished":1},"$set":{"publisher.name":"Wonderbooks"}}' and I need to make changes around fields/update.go to support for more operator.

efirs commented 1 year ago

@Shubham8287, Right, fields/update.go is where changes should go. You Just need to add corresponding fields, similar to https://github.com/tigrisdata/tigris-client-go/blob/main/fields/update.go#L31 . Please mind the json tag here which is what will be marshalled: "$divide" and "$increment" in your example above. Also corresponding setters should be implemented, similar to: [Object scope] https://github.com/tigrisdata/tigris-client-go/blob/main/fields/update.go#L63 [Package scope] https://github.com/tigrisdata/tigris-client-go/blob/main/fields/update.go#L83

algora-pbc[bot] commented 1 year ago

💡 @Dasio submitted a pull request that claims the bounty. You can visit your org dashboard to reward.

Shubham8287 commented 1 year ago

@Dasio Buddy, not sure what made you work on this but the issue was assigned to me and I was about to raise a PR for this. We should respect basic rules to work on open source just to avoid things like deduplication of efforts.

Dasio commented 1 year ago

Sure go ahead, I was just testing Algora. You have started 2 weeks ago and no PR.

I was looking at several issues, and users just assign issues without any work. But yeah you are right.

Dasio commented 1 year ago

@Shubham8287 taking it back. You are taking multiple issues. What about doing one issue at a time? You are just assigning issues to yourself and don't leave anything to others and then even simple issues are blocked for multiple weeks without any good reason.

ovaistariq commented 1 year ago

Hi, @Shubham8287 how far along are you with the implementation? If you still need to make progress, then it would be better to let @Dasio proceed with this.

Shubham8287 commented 1 year ago

I am fine, Let @Dasio go ahead with this as he already pushed.

for @Dasio first of all, I think maintainers should care about timelines, they know the priorities better and Algora should decide about a number of issues at the time not us and rather we should learn basics of open source contribution.

You are just assigning issues to yourself and don't leave anything to others and then even simple issues are blocked for multiple weeks without any good reason.

Not sure, what analysis made you say this. I have 2 other issues assigned to me, One is in review for a long time and the other is pretty big and expected to take time. I have ~3 closed issues, and all of them took about ~2 days (including a task with Tigris). though I do not need to justify any of this to you. I am here to do Engineering and learn, not to argue. Good luck!

Sorry maintainers for spamming here.

IoannisFlo commented 1 year ago

hey everyone, this is ioannis, one of the founders at algora. our sincere apologies for everyone's inconvenience here, it's our fault, we'll do a better job of marking in progress and giving status updates. we already updated our bot reply for new bounties, it now asks to use a /attempt #236 command to notify everyone, and we'll prevent folks from using /attempt in multiple bounties of the same org. this is all new and we appreciate your input and the opportunity to improve the workflow with your feedback, thanks in advance for the understanding

ovaistariq commented 1 year ago

@Shubham8287, thanks for the flexibility. We appreciate your contributions and would love to see them continue.

P.S. we do not have any issues with multiple issues being worked on by the same contributor

algora-pbc[bot] commented 1 year ago

🎉🎈 @Dasio has been awarded $25.00! 🎈🎊

github-actions[bot] commented 1 year ago

:tada: This issue has been resolved in version 1.1.0-next.1 :tada:

The release is available on GitHub release

Your semantic-release bot :package::rocket: