Hello,
Absolute beginner in Appwrite here, so I would like to know how to implement this using Appwrite, or if it's even possible to use Appwrite in this case.
My project is an app that is offline first and that is multi-user.
The problem situation is the following:
- User A downloads some documents from the server, then goes offline.
- User B edits a document and uploads the document to the server.
- User A, still offline, edits the same document user B had changed.
- User A goes online and sends the document to the server, overwriting without notice the changes User A had done.
The solution I have in mind is:
- The server, when receives a document from a client, checks if the updated_at field of the received document is equal to the updated_at field of the document in the server database. Please notice that the client don't change this field. It's the timestamp of the last time the server received this document.
- If both timestamps are different, it means some other user changed the document while the user submitting the document was offline. The submitting user then receives a warning and may choose between some options what to do.
How can I get this with Appwrite?
You’d probably have to implement those checks in a Function, or something - so when uploading, instead of going direct to the Database, you’d pass the data to a Function, which would then either update that in the DB, or respond with an error.
Recommended threads
- ClientException with SocketException: Cl...
hi <@564158268319203348> i have noticed this 500 status code in my function requests, it seems its not able to connect to the internet in the function as reque...
- NEW ERROR Invalid document structure: At...
Error: ```AppwriteException: document_invalid_structure, Invalid document structure: Attribute "pb.kmsgxPkgInfo.id_info" must be an array (400)``` I’m encounter...
- Issues with executor in Appwrite 1.9.0
Hi, I’ve recently did a fresh install of appwrite 1.9.0 self hosted and when I run a function, it just waits indefinite This is the error from the log: [Er...