summaryrefslogtreecommitdiff
path: root/cli/cache/module_info.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/cache/module_info.rs')
-rw-r--r--cli/cache/module_info.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/cli/cache/module_info.rs b/cli/cache/module_info.rs
index 6d317b216..2e9274160 100644
--- a/cli/cache/module_info.rs
+++ b/cli/cache/module_info.rs
@@ -39,6 +39,7 @@ pub static MODULE_INFO_CACHE_DB: CacheDBConfiguration = CacheDBConfiguration {
on_failure: CacheFailure::InMemory,
};
+#[derive(Debug)]
pub struct ModuleInfoCacheSourceHash(String);
impl ModuleInfoCacheSourceHash {
@@ -55,6 +56,12 @@ impl ModuleInfoCacheSourceHash {
}
}
+impl From<ModuleInfoCacheSourceHash> for String {
+ fn from(source_hash: ModuleInfoCacheSourceHash) -> String {
+ source_hash.0
+ }
+}
+
/// A cache of `deno_graph::ModuleInfo` objects. Using this leads to a considerable
/// performance improvement because when it exists we can skip parsing a module for
/// deno_graph.
@@ -80,6 +87,23 @@ impl ModuleInfoCache {
}
}
+ pub fn get_module_source_hash(
+ &self,
+ specifier: &ModuleSpecifier,
+ media_type: MediaType,
+ ) -> Result<Option<ModuleInfoCacheSourceHash>, AnyError> {
+ let query = "SELECT source_hash FROM moduleinfocache WHERE specifier=?1 AND media_type=?2";
+ let res = self.conn.query_row(
+ query,
+ params![specifier.as_str(), serialize_media_type(media_type)],
+ |row| {
+ let source_hash: String = row.get(0)?;
+ Ok(ModuleInfoCacheSourceHash(source_hash))
+ },
+ )?;
+ Ok(res)
+ }
+
pub fn get_module_info(
&self,
specifier: &ModuleSpecifier,