unobtanium 3.0.0

Opinioated Web search engine library with crawler and viewer companion.
Documentation
use criterium::NumberCriterium;
use criterium::rusqlite::assembler::*;
use criterium::StringCriterium;
use serde::{Serialize,Deserialize};

use crate::database::SummarySchema;
use crate::database::fields::*;

/// Matches the `token` and `token_statistics` tables in the summry database.
#[derive(Clone,Debug,Serialize,Deserialize)]
#[serde(rename_all="snake_case")]
pub enum TokenStatisticsCriterium {
	Text(StringCriterium),
	Occurances(NumberCriterium<usize>),
}

impl AssembleRusqliteQuery<SummarySchema, ()> for TokenStatisticsCriterium {
	fn assemble_rusqlite_query(
		&self,
		assembly_context: &AssemblyContext,
		_condition: &()
	) -> InvertableRusqliteQuery<SummarySchema> {
		match self {
			Self::Text(c) => {
				c.assemble_query(assembly_context, &TokenField::TokenText.into())
					.inner_join(
						None,
						TokenField::TokenId.into(),
						None,
						TokenStatisticsField::TokenId.into(),
					)
			},
			Self::Occurances(c) => {
				c.assemble_query(assembly_context, &TokenStatisticsField::Occurances.into())
			},
		}
	}
}