Replies: 1 comment 1 reply
-
Hey, I came across Apple’s guidelines requiring the ability for users to completely delete their accounts and associated data. Given Evolu's use of CRDTs & append-only model, where data isn't truly deleted but only marked as such, do you have plans to implement a feature that allows for complete data deletion to comply with these guidelines? If so, could you share any details on the timeline or approach for this feature? Not sure if Evolu can be used (in the App Store) before that. In theory, because of the data is encrypted and the keys are held only by the user, "deleting" the data could be achieved by deleting the encryption keys. If the keys are deleted in a way that they cannot be recovered, the encrypted data, though still existing, would be inaccessible and effectively "useless." I’m just not sure if this satisfies Apple’s requirements for account deletion. |
Beta Was this translation helpful? Give feedback.
-
It isn't possible to naively delete rows in CRDT because data are append-only. Data must be append-only because, in the distributed system, you never know whether some device has an update of some already deleted row. In other words, we must store the whole history of changes to be able to sync data properly. In the future, we will implement real deletion, which actually means "Remove this row from history and ignore all updates forever.".
To delete data in Evolu, set the
isDeleted
column totrue
and use it in queries. All tables have this column by default.Having to write
.where("isDeleted", "is not", model.cast(true))
in all queries is verbose and we can do better. I experimented with SQL Views filtering all deleted rows, and it worked well. The only problem was how to undelete such invisible rows. Once we define API for that, we can implement it.Beta Was this translation helpful? Give feedback.
All reactions