introduce salsa and integrate into djls-project crate (#139)
Some checks failed
lint / pre-commit (push) Waiting to run
zizmor 🌈 / zizmor latest via PyPI (push) Waiting to run
release / build (push) Failing after 15s
release / test (push) Has been skipped
release / release (push) Has been cancelled

This commit is contained in:
Josh Thomas 2025-05-09 23:16:39 -05:00 committed by GitHub
parent 0c041e20d7
commit ccf33290b3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 896 additions and 670 deletions

View file

@ -0,0 +1,31 @@
use crate::meta::ProjectMetadata;
#[salsa::db]
pub trait Db: salsa::Database {
fn metadata(&self) -> &ProjectMetadata;
}
#[salsa::db]
#[derive(Clone)]
pub struct ProjectDatabase {
storage: salsa::Storage<ProjectDatabase>,
metadata: ProjectMetadata,
}
impl ProjectDatabase {
pub fn new(metadata: ProjectMetadata) -> Self {
let storage = salsa::Storage::new(None);
Self { storage, metadata }
}
}
#[salsa::db]
impl Db for ProjectDatabase {
fn metadata(&self) -> &ProjectMetadata {
&self.metadata
}
}
#[salsa::db]
impl salsa::Database for ProjectDatabase {}