Skip to content

Commit

Permalink
remove _modules.deleted field (#25043)
Browse files Browse the repository at this point in the history
we have removed all documents for which `deleted` is true. clean up the field

GitOrigin-RevId: 7195e013678db9627488482e108008b39fadf8cd
  • Loading branch information
ldanilek authored and Convex, Inc. committed Apr 24, 2024
1 parent c896bb7 commit 03a1142
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 27 deletions.
23 changes: 4 additions & 19 deletions crates/model/src/modules/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -180,9 +180,7 @@ impl<'a, RT: Runtime> ModuleModel<'a, RT> {
let mut modules = Vec::new();
while let Some(metadata_document) = query_stream.next(self.tx, None).await? {
let metadata: ParsedDocument<ModuleMetadata> = metadata_document.try_into()?;
if !metadata.deleted {
modules.push(metadata);
}
modules.push(metadata);
}
Ok(modules)
}
Expand Down Expand Up @@ -250,8 +248,7 @@ impl<'a, RT: Runtime> ModuleModel<'a, RT> {
if path.is_system() && !(self.tx.identity().is_admin() || self.tx.identity().is_system()) {
anyhow::bail!(unauthorized_error("get_module"))
}
let include_deleted = false;
let module_metadata = match self.module_metadata(path, include_deleted).await? {
let module_metadata = match self.module_metadata(path).await? {
Some(r) => r,
None => return Ok(None),
};
Expand Down Expand Up @@ -279,19 +276,13 @@ impl<'a, RT: Runtime> ModuleModel<'a, RT> {
path.is_deps() || analyze_result.is_some(),
"AnalyzedModule is required for non-dependency modules"
);
// If there was a previously deleted document, it is important to replace
// it instead of adding a new one, in order to have at most one document
// for each path.
let include_deleted = true;
let (module_id, version) = match self.module_metadata(path.clone(), include_deleted).await?
{
let (module_id, version) = match self.module_metadata(path.clone()).await? {
Some(module_metadata) => {
let previous_version = module_metadata.latest_version;
let latest_version = previous_version + 1;
let new_metadata = ModuleMetadata {
path,
latest_version,
deleted: false,
};
SystemMetadataModel::new(self.tx)
.replace(module_metadata.id(), new_metadata.try_into()?)
Expand All @@ -313,7 +304,6 @@ impl<'a, RT: Runtime> ModuleModel<'a, RT> {
let new_metadata = ModuleMetadata {
path,
latest_version: version,
deleted: false,
};

let document_id = SystemMetadataModel::new(self.tx)
Expand Down Expand Up @@ -357,8 +347,7 @@ impl<'a, RT: Runtime> ModuleModel<'a, RT> {
if !(self.tx.identity().is_admin() || self.tx.identity().is_system()) {
anyhow::bail!(unauthorized_error("delete_module"));
}
let include_deleted = false;
if let Some(module_metadata) = self.module_metadata(path, include_deleted).await? {
if let Some(module_metadata) = self.module_metadata(path).await? {
let module_id = module_metadata.id();
SystemMetadataModel::new(self.tx).delete(module_id).await?;

Expand All @@ -377,7 +366,6 @@ impl<'a, RT: Runtime> ModuleModel<'a, RT> {
async fn module_metadata(
&mut self,
path: CanonicalizedModulePath,
include_deleted: bool,
) -> anyhow::Result<Option<ParsedDocument<ModuleMetadata>>> {
let index_range = IndexRange {
index_name: MODULE_INDEX_BY_PATH.clone(),
Expand All @@ -394,9 +382,6 @@ impl<'a, RT: Runtime> ModuleModel<'a, RT> {
Some(v) => v.try_into()?,
None => return Ok(None),
};
if !include_deleted && module_document.deleted {
return Ok(None);
}
Ok(Some(module_document))
}

Expand Down
10 changes: 2 additions & 8 deletions crates/model/src/modules/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ pub struct ModuleMetadata {
pub path: CanonicalizedModulePath,
/// What is the latest version of the module?
pub latest_version: ModuleVersion,
/// Has the module been deleted?
pub deleted: bool,
}

impl TryFrom<ModuleMetadata> for ConvexObject {
Expand All @@ -31,7 +29,8 @@ impl TryFrom<ModuleMetadata> for ConvexObject {
obj!(
"path" => String::from(m.path),
"latestVersion" => m.latest_version,
"deleted" => m.deleted,
// TODO(lee) remove once it's no longer expected on the read path.
"deleted" => false,
)
}
}
Expand Down Expand Up @@ -62,14 +61,9 @@ impl TryFrom<ConvexObject> for ModuleMetadata {
Some(ConvexValue::Int64(i)) => i,
v => anyhow::bail!("Invalid latest_version field for ModuleMetadata: {:?}", v),
};
let deleted = match fields.remove("deleted") {
Some(ConvexValue::Boolean(s)) => s,
v => anyhow::bail!("Invalid deleted field for ModuleMetadata: {:?}", v),
};
Ok(Self {
path,
latest_version,
deleted,
})
}
}
Expand Down

0 comments on commit 03a1142

Please sign in to comment.