in backend/app/services/manifest/Neo4jManifest.scala [609:658]
override def markAsComplete(params: ExtractionParams, blob: Blob, extractor: Extractor): Either[Failure, Unit] = transaction { tx =>
logger.info(s"Marking ${blob.uri.value} / ${extractor.name} as complete")
val maybeWorkspaceProperties = params.workspace.map { _ =>
"""
|,
|workspaceId: {workspaceId},
|workspaceNodeId: {workspaceNodeId},
|workspaceBlobUri: {workspaceBlobUri}
|""".stripMargin
}.getOrElse("")
val result = tx.run(
s"""
|MATCH (b :Blob:Resource {uri: {uri}})<-[todo:TODO {
| ingestion: {ingestion},
| parentBlobs: {parentBlobs},
| languages: {languages}
| ${maybeWorkspaceProperties}
|}]-(e: Extractor {name: {extractorName}})
|
|DELETE todo
|
|MERGE (b)<-[:PROCESSED {
| ingestion: {ingestion},
| parentBlobs: {parentBlobs},
| languages: {languages}
| ${maybeWorkspaceProperties}
|}]-(e)
|""".stripMargin,
parameters(
"uri", blob.uri.value,
"extractorName", extractor.name,
"ingestion", params.ingestion,
"languages", params.languages.map(_.key).asJava,
"parentBlobs", params.parentBlobs.map(_.value).asJava,
"workspaceId", params.workspace.map(_.workspaceId).orNull,
"workspaceNodeId", params.workspace.map(_.workspaceNodeId).orNull,
"workspaceBlobUri", params.workspace.map(_.blobAddedToWorkspace).orNull
)
)
val counters = result.summary().counters()
if(counters.relationshipsCreated() != 1 || counters.relationshipsDeleted() != 1) {
Left(IllegalStateFailure(s"Unexpected number of creates/deletes in markAsComplete. Created: ${counters.relationshipsCreated()}. Deleted: ${counters.relationshipsDeleted()}"))
} else {
Right(())
}
}