django-language-server/crates/djls-project/src/db.rs
Josh Thomas ccf33290b3
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
introduce salsa and integrate into djls-project crate (#139)
2025-05-09 23:16:39 -05:00

31 lines
612 B
Rust

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 {}