aboutsummaryrefslogtreecommitdiffstats
path: root/crates/atuin-scripts/src/store.rs
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-06-10 22:01:45 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-06-10 22:01:45 +0200
commit5e31a81cd2207f053b8cd8ad84ebe2a2f691b29d (patch)
tree5d76811ab0d693c01fa472d41aa2ceaf3bd0b415 /crates/atuin-scripts/src/store.rs
parentchore: Remove unneeded files (diff)
downloadatuin-5e31a81cd2207f053b8cd8ad84ebe2a2f691b29d.zip
chore: Remove some unused rust code
Diffstat (limited to 'crates/atuin-scripts/src/store.rs')
-rw-r--r--crates/atuin-scripts/src/store.rs114
1 files changed, 0 insertions, 114 deletions
diff --git a/crates/atuin-scripts/src/store.rs b/crates/atuin-scripts/src/store.rs
deleted file mode 100644
index e70f6909..00000000
--- a/crates/atuin-scripts/src/store.rs
+++ /dev/null
@@ -1,114 +0,0 @@
-use eyre::{Result, bail};
-
-use atuin_client::record::sqlite_store::SqliteStore;
-use atuin_client::record::{encryption::PASETO_V4, store::Store};
-use atuin_common::record::{Host, HostId, Record, RecordId, RecordIdx};
-use record::ScriptRecord;
-use script::{SCRIPT_TAG, SCRIPT_VERSION, Script};
-
-use crate::database::Database;
-
-pub mod record;
-pub mod script;
-
-#[derive(Debug, Clone)]
-pub struct ScriptStore {
- pub store: SqliteStore,
- pub host_id: HostId,
- pub encryption_key: [u8; 32],
-}
-
-impl ScriptStore {
- pub fn new(store: SqliteStore, host_id: HostId, encryption_key: [u8; 32]) -> Self {
- ScriptStore {
- store,
- host_id,
- encryption_key,
- }
- }
-
- async fn push_record(&self, record: ScriptRecord) -> Result<(RecordId, RecordIdx)> {
- let bytes = record.serialize()?;
- let idx = self
- .store
- .last(self.host_id, SCRIPT_TAG)
- .await?
- .map_or(0, |p| p.idx + 1);
-
- let record = Record::builder()
- .host(Host::new(self.host_id))
- .version(SCRIPT_VERSION.to_string())
- .tag(SCRIPT_TAG.to_string())
- .idx(idx)
- .data(bytes)
- .build();
-
- let id = record.id;
-
- self.store
- .push(&record.encrypt::<PASETO_V4>(&self.encryption_key))
- .await?;
-
- Ok((id, idx))
- }
-
- pub async fn create(&self, script: Script) -> Result<()> {
- let record = ScriptRecord::Create(script);
- self.push_record(record).await?;
- Ok(())
- }
-
- pub async fn update(&self, script: Script) -> Result<()> {
- let record = ScriptRecord::Update(script);
- self.push_record(record).await?;
- Ok(())
- }
-
- pub async fn delete(&self, script_id: uuid::Uuid) -> Result<()> {
- let record = ScriptRecord::Delete(script_id);
- self.push_record(record).await?;
- Ok(())
- }
-
- pub async fn scripts(&self) -> Result<Vec<ScriptRecord>> {
- let records = self.store.all_tagged(SCRIPT_TAG).await?;
- let mut ret = Vec::with_capacity(records.len());
-
- for record in records.into_iter() {
- let script = match record.version.as_str() {
- SCRIPT_VERSION => {
- let decrypted = record.decrypt::<PASETO_V4>(&self.encryption_key)?;
-
- ScriptRecord::deserialize(&decrypted.data, SCRIPT_VERSION)
- }
- version => bail!("unknown history version {version:?}"),
- }?;
-
- ret.push(script);
- }
-
- Ok(ret)
- }
-
- pub async fn build(&self, database: Database) -> Result<()> {
- // Clear existing data before replaying all records from the store.
- // Without this, stale rows can cause unique constraint violations
- // when records are replayed (eg name conflicts from renamed scripts).
- database.clear().await?;
-
- // Get all the scripts from the store - they are already sorted by timestamp
- let scripts = self.scripts().await?;
-
- for script in scripts {
- match script {
- ScriptRecord::Create(script) => {
- database.save(&script).await?;
- }
- ScriptRecord::Update(script) => database.update(&script).await?,
- ScriptRecord::Delete(id) => database.delete(&id.to_string()).await?,
- }
- }
-
- Ok(())
- }
-}