use log::trace;
use uuid::Uuid;
use crate::database::DatabaseError;
use crate::database::id::EntityGenerationId;
use crate::database::sqlite_helper::*;
use crate::database::summary::structs::SummaryDatabase;
use crate::database::summary::structs::SummaryDatabaseTransaction;
use crate::summary::DocumentDescription;
impl SummaryDatabase {
pub fn get_document_description(
&self, entity_generation_id: EntityGenerationId
) -> Result<DocumentDescription, DatabaseError> {
trace!("summary_db.get_document_description()");
self.connection().query_row(
"SELECT
time_created_unix_utc,
time_updated_unix_utc,
primary_language,
title,
primary_headline,
description,
indexiness
FROM document_description
WHERE entity_generation_id = ?
", (entity_generation_id,),
|row| Ok(DocumentDescription {
date_published: from_unix_timestamp_opt(row.get(0)?),
date_last_updated: from_unix_timestamp_opt(row.get(1)?),
primary_language: row.get(2)?,
title: row.get(3)?,
primary_headline: row.get(4)?,
description: row.get(5)?,
indexiness: row.get(6)?,
})
).map_err(Into::into)
}
}
impl SummaryDatabaseTransaction<'_> {
pub fn store_document_description(
&mut self,
entity_generation_uuid: Uuid,
description: DocumentDescription
) -> Result<(), DatabaseError> {
trace!("summary_db_transaction.store_document_description()");
let entity_generation_id = self.get_entity_generation_id(entity_generation_uuid)?;
let mut store_document_description_statement = self.connection().prepare_cached(
"INSERT INTO document_description (
entity_generation_id,
time_created_unix_utc,
time_updated_unix_utc,
primary_language,
title,
primary_headline,
description,
indexiness
) VALUES (
?,?,?,?, ?,?,?,?
)"
)?;
store_document_description_statement.execute(
(
entity_generation_id,
to_unix_timestamp_opt(description.date_published),
to_unix_timestamp_opt(description.date_last_updated),
description.primary_language,
description.title,
description.primary_headline,
description.description,
description.indexiness,
)
)?;
Ok(())
}
}