feat: add store push --force

This will

1. Wipe the remote store
2. Upload all of the local store to remote

Imagine the scenario where you end up with some mixed keys locally :(

You confirm this with

```
atuin store verify
```

You then fix it locally with

```
atuin store purge
```

Ensure that your local changes are reflected remotely with

```
atuin store push --force
```

and then (another PR, coming soon), update all other hosts with

```
atuin store pull --force
```
This commit is contained in:
Ellie Huxtable
2024-02-02 15:05:07 +00:00
parent 3c420f85f6
commit c9a453289e
7 changed files with 94 additions and 2 deletions

View File

@ -53,15 +53,16 @@ pub trait Database: Sized + Clone + Send + Sync + 'static {
async fn get_user(&self, username: &str) -> DbResult<User>;
async fn get_user_session(&self, u: &User) -> DbResult<Session>;
async fn add_user(&self, user: &NewUser) -> DbResult<i64>;
async fn delete_user(&self, u: &User) -> DbResult<()>;
async fn update_user_password(&self, u: &User) -> DbResult<()>;
async fn total_history(&self) -> DbResult<i64>;
async fn count_history(&self, user: &User) -> DbResult<i64>;
async fn count_history_cached(&self, user: &User) -> DbResult<i64>;
async fn delete_user(&self, u: &User) -> DbResult<()>;
async fn delete_history(&self, user: &User, id: String) -> DbResult<()>;
async fn deleted_history(&self, user: &User) -> DbResult<Vec<String>>;
async fn delete_store(&self, user: &User) -> DbResult<()>;
async fn add_records(&self, user: &User, record: &[Record<EncryptedData>]) -> DbResult<()>;
async fn next_records(