Rank 5: Hypervisor
I'm implementing a like system in my app. So, the users can like a post posted by another user. Now, I'm storing the likes by creating a new collection with 2 attributes (userId and postId). The problem I'm facing is, how to know how many likes this post already has?
I looked up the docs to find a way to perform aggregation queries, but can't find any.
So, I thought of this solution, I will create an appwrite function which will be responsible for toggling the like on a post by a user. Whenever the user likes a post, I'm incrementing an integer totalLikes stored along with the post data.
For now, I'm doing this in an appwrite function, every time a user likes a post, I'm fetching the current likes count for that post, adding 1 to it, and then updating it back onto the database.
But, now again, I wasn't able to find a way to increment this variable atomically. Or is a race condition never going to happen, even for millions of users?
So, I have a couple of questions?
1. Does appwrite have support for aggregation queries?
2. In appwrite, is there any way to atomically increment values? I want something like this:
update({
'totalLikes': FieldValue.increment(1),
})
3. Is there any way to run transactions, just like in firebase?