unobtanium 3.0.0

Opinioated Web search engine library with crawler and viewer companion.
Documentation
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(())
	}
	
}