unobtanium 3.0.0

Opinioated Web search engine library with crawler and viewer companion.
Documentation
use log::trace;

use crate::content::InformationSource;
use crate::content::RedirectData;
use crate::database::error::SmuggleDatabaseErrorExtension;
use crate::database::id::EntityGenerationId;
use crate::database::DatabaseError;
use crate::database::sqlite_helper::*;
use crate::database::summary::structs::SummaryDatabase;
use crate::summary::WithEntityGenerationId;


impl SummaryDatabase {
	pub fn store_redirect_summary(
		&mut self,
		redirect: WithEntityGenerationId<RedirectData>,
	) -> Result<(), DatabaseError> {

		self.base().assert_writable("store_redirect_summary")?;

		trace!("summary_db.store_redirect_summary()");
		let to_url_id = self.base_mut().get_or_add_url_id(&redirect.data.to_url.clone().into())?;
		self.connection().execute(
			"INSERT INTO redirect_summary (
				entity_generation_id,
				to_url_id,
				to_url_fragment,
				information_source,
				is_permanent,
				by_security_policy
			) Values (?,?,?,?, ?,?)
			",(
				redirect.entity_generation_id,
				to_url_id,
				redirect.data.to_url.fragment(),
				redirect.data.information_source.to_number(),
				redirect.data.is_permanent,
				redirect.data.by_security_policy,
		))?;
		return Ok(());

	}
	
	pub fn get_redirect_summary(
		&mut self,
		entity_generation_id: EntityGenerationId,
	) -> Result<RedirectData, DatabaseError> {
		trace!("summary_db.get_redirect_summary()");
		return self.connection().query_row(
			"SELECT
				to_url_id,
				information_source,
				is_permanent,
				by_security_policy,
				to_url_fragment
			FROM file_summary
			WHERE entity_generation_id = ?
			",(entity_generation_id,),
			|row| {
				return Ok(RedirectData {
					to_url: url_with_fragment_from_row(self.base(), row, 0, 4)
						.smuggle_through_rusqlite()?,
					information_source: InformationSource::from_number(row.get(1)?),
					is_permanent: row.get(2)?,
					by_security_policy: row.get(3)?,
				})
			}
		).map_err(Into::into);

	}
}