use criterium::sql::Field;
use crate::database::BaseTable;
use crate::database::CrawlerTable;
use crate::database::SummaryTable;
use crate::database::fields::*;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum BaseSchema {
MimeParameter(MimeParameterField),
Mimetype(MimetypeField),
Origin(OriginField),
UnobtaniumDatabaseInfo(UnobtaniumDatabaseInfoField),
Url(UrlField),
}
impl Field for BaseSchema {
type TableType = BaseTable;
fn sql_safe_field_name(&self) -> &str {
match self {
Self::MimeParameter(f) => f.sql_safe_field_name(),
Self::Mimetype(f) => f.sql_safe_field_name(),
Self::Origin(f) => f.sql_safe_field_name(),
Self::UnobtaniumDatabaseInfo(f) => f.sql_safe_field_name(),
Self::Url(f) => f.sql_safe_field_name(),
}
}
fn table(&self) -> &Self::TableType {
match self {
Self::MimeParameter(_) => &BaseTable::MimeParameter,
Self::Mimetype(_) => &BaseTable::Mimetype,
Self::Origin(_) => &BaseTable::Origin,
Self::UnobtaniumDatabaseInfo(_) => &BaseTable::UnobtaniumDatabaseInfo,
Self::Url(_) => &BaseTable::Url,
}
}
}
impl From<MimeParameterField> for BaseSchema {
fn from(value: MimeParameterField) -> Self {
Self::MimeParameter(value)
}
}
impl From<MimetypeField> for BaseSchema {
fn from(value: MimetypeField) -> Self {
Self::Mimetype(value)
}
}
impl From<OriginField> for BaseSchema {
fn from(value: OriginField) -> Self {
Self::Origin(value)
}
}
impl From<UnobtaniumDatabaseInfoField> for BaseSchema {
fn from(value: UnobtaniumDatabaseInfoField) -> Self {
Self::UnobtaniumDatabaseInfo(value)
}
}
impl From<UrlField> for BaseSchema {
fn from(value: UrlField) -> Self {
Self::Url(value)
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum CrawlerSchema {
MimeParameter(MimeParameterField),
Mimetype(MimetypeField),
Origin(OriginField),
UnobtaniumDatabaseInfo(UnobtaniumDatabaseInfoField),
Url(UrlField),
Agent(AgentField),
CrawlCandidate(CrawlCandidateField),
CrawlLog(CrawlLogField),
File(FileField),
FileText(FileTextField),
Redirect(RedirectField),
Request(RequestField),
TempIgnoreOrigin(TempIgnoreOriginField),
TempIgnoreUrl(TempIgnoreUrlField),
}
impl Field for CrawlerSchema {
type TableType = CrawlerTable;
fn sql_safe_field_name(&self) -> &str {
match self {
Self::MimeParameter(f) => f.sql_safe_field_name(),
Self::Mimetype(f) => f.sql_safe_field_name(),
Self::Origin(f) => f.sql_safe_field_name(),
Self::UnobtaniumDatabaseInfo(f) => f.sql_safe_field_name(),
Self::Url(f) => f.sql_safe_field_name(),
Self::Agent(f) => f.sql_safe_field_name(),
Self::CrawlCandidate(f) => f.sql_safe_field_name(),
Self::CrawlLog(f) => f.sql_safe_field_name(),
Self::File(f) => f.sql_safe_field_name(),
Self::FileText(f) => f.sql_safe_field_name(),
Self::Redirect(f) => f.sql_safe_field_name(),
Self::Request(f) => f.sql_safe_field_name(),
Self::TempIgnoreOrigin(f) => f.sql_safe_field_name(),
Self::TempIgnoreUrl(f) => f.sql_safe_field_name(),
}
}
fn table(&self) -> &Self::TableType {
match self {
Self::MimeParameter(_) => &CrawlerTable::Base(BaseTable::MimeParameter),
Self::Mimetype(_) => &CrawlerTable::Base(BaseTable::Mimetype),
Self::Origin(_) => &CrawlerTable::Base(BaseTable::Origin),
Self::UnobtaniumDatabaseInfo(_) => &CrawlerTable::Base(BaseTable::UnobtaniumDatabaseInfo),
Self::Url(_) => &CrawlerTable::Base(BaseTable::Url),
Self::Agent(_) => &CrawlerTable::Agent,
Self::CrawlCandidate(_) => &CrawlerTable::CrawlCandidate,
Self::CrawlLog(_) => &CrawlerTable::CrawlLog,
Self::File(_) => &CrawlerTable::File,
Self::FileText(_) => &CrawlerTable::FileText,
Self::Redirect(_) => &CrawlerTable::Redirect,
Self::Request(_) => &CrawlerTable::Request,
Self::TempIgnoreOrigin(_) => &CrawlerTable::TempIgnoreOrigin,
Self::TempIgnoreUrl(_) => &CrawlerTable::TempIgnoreUrl,
}
}
}
impl From<MimeParameterField> for CrawlerSchema {
fn from(value: MimeParameterField) -> Self {
Self::MimeParameter(value)
}
}
impl From<MimetypeField> for CrawlerSchema {
fn from(value: MimetypeField) -> Self {
Self::Mimetype(value)
}
}
impl From<OriginField> for CrawlerSchema {
fn from(value: OriginField) -> Self {
Self::Origin(value)
}
}
impl From<UnobtaniumDatabaseInfoField> for CrawlerSchema {
fn from(value: UnobtaniumDatabaseInfoField) -> Self {
Self::UnobtaniumDatabaseInfo(value)
}
}
impl From<UrlField> for CrawlerSchema {
fn from(value: UrlField) -> Self {
Self::Url(value)
}
}
impl From<AgentField> for CrawlerSchema {
fn from(value: AgentField) -> Self {
Self::Agent(value)
}
}
impl From<CrawlCandidateField> for CrawlerSchema {
fn from(value: CrawlCandidateField) -> Self {
Self::CrawlCandidate(value)
}
}
impl From<CrawlLogField> for CrawlerSchema {
fn from(value: CrawlLogField) -> Self {
Self::CrawlLog(value)
}
}
impl From<FileField> for CrawlerSchema {
fn from(value: FileField) -> Self {
Self::File(value)
}
}
impl From<FileTextField> for CrawlerSchema {
fn from(value: FileTextField) -> Self {
Self::FileText(value)
}
}
impl From<RedirectField> for CrawlerSchema {
fn from(value: RedirectField) -> Self {
Self::Redirect(value)
}
}
impl From<RequestField> for CrawlerSchema {
fn from(value: RequestField) -> Self {
Self::Request(value)
}
}
impl From<TempIgnoreOriginField> for CrawlerSchema {
fn from(value: TempIgnoreOriginField) -> Self {
Self::TempIgnoreOrigin(value)
}
}
impl From<TempIgnoreUrlField> for CrawlerSchema {
fn from(value: TempIgnoreUrlField) -> Self {
Self::TempIgnoreUrl(value)
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum SummarySchema {
MimeParameter(MimeParameterField),
Mimetype(MimetypeField),
Origin(OriginField),
UnobtaniumDatabaseInfo(UnobtaniumDatabaseInfoField),
Url(UrlField),
CrawlSummary(CrawlSummaryField),
DocumentDescription(DocumentDescriptionField),
DuplicateSummary(DuplicateSummaryField),
EntityGeneration(EntityGenerationField),
FileSummary(FileSummaryField),
FullTextEntityIndex(FullTextEntityIndexField),
HttpSummary(HttpSummaryField),
LinkSummary(LinkSummaryField),
RedirectSummary(RedirectSummaryField),
TextPile(TextPileField),
Token(TokenField),
TokenStatistics(TokenStatisticsField),
}
impl Field for SummarySchema {
type TableType = SummaryTable;
fn sql_safe_field_name(&self) -> &str {
match self {
Self::MimeParameter(f) => f.sql_safe_field_name(),
Self::Mimetype(f) => f.sql_safe_field_name(),
Self::Origin(f) => f.sql_safe_field_name(),
Self::UnobtaniumDatabaseInfo(f) => f.sql_safe_field_name(),
Self::Url(f) => f.sql_safe_field_name(),
Self::CrawlSummary(f) => f.sql_safe_field_name(),
Self::DocumentDescription(f) => f.sql_safe_field_name(),
Self::DuplicateSummary(f) => f.sql_safe_field_name(),
Self::EntityGeneration(f) => f.sql_safe_field_name(),
Self::FileSummary(f) => f.sql_safe_field_name(),
Self::FullTextEntityIndex(f) => f.sql_safe_field_name(),
Self::HttpSummary(f) => f.sql_safe_field_name(),
Self::LinkSummary(f) => f.sql_safe_field_name(),
Self::RedirectSummary(f) => f.sql_safe_field_name(),
Self::TextPile(f) => f.sql_safe_field_name(),
Self::Token(f) => f.sql_safe_field_name(),
Self::TokenStatistics(f) => f.sql_safe_field_name(),
}
}
fn table(&self) -> &Self::TableType {
match self {
Self::MimeParameter(_) => &SummaryTable::Base(BaseTable::MimeParameter),
Self::Mimetype(_) => &SummaryTable::Base(BaseTable::Mimetype),
Self::Origin(_) => &SummaryTable::Base(BaseTable::Origin),
Self::UnobtaniumDatabaseInfo(_) => &SummaryTable::Base(BaseTable::UnobtaniumDatabaseInfo),
Self::Url(_) => &SummaryTable::Base(BaseTable::Url),
Self::CrawlSummary(_) => &SummaryTable::CrawlSummary,
Self::DocumentDescription(_) => &SummaryTable::DocumentDescription,
Self::DuplicateSummary(_) => &SummaryTable::DuplicateSummary,
Self::EntityGeneration(_) => &SummaryTable::EntityGeneration,
Self::FileSummary(_) => &SummaryTable::FileSummary,
Self::FullTextEntityIndex(_) => &SummaryTable::FullTextEntityIndex,
Self::HttpSummary(_) => &SummaryTable::HttpSummary,
Self::LinkSummary(_) => &SummaryTable::LinkSummary,
Self::RedirectSummary(_) => &SummaryTable::RedirectSummary,
Self::TextPile(_) => &SummaryTable::TextPile,
Self::Token(_) => &SummaryTable::Token,
Self::TokenStatistics(_) => &SummaryTable::TokenStatistics,
}
}
}
impl From<MimeParameterField> for SummarySchema {
fn from(value: MimeParameterField) -> Self {
Self::MimeParameter(value)
}
}
impl From<MimetypeField> for SummarySchema {
fn from(value: MimetypeField) -> Self {
Self::Mimetype(value)
}
}
impl From<OriginField> for SummarySchema {
fn from(value: OriginField) -> Self {
Self::Origin(value)
}
}
impl From<UnobtaniumDatabaseInfoField> for SummarySchema {
fn from(value: UnobtaniumDatabaseInfoField) -> Self {
Self::UnobtaniumDatabaseInfo(value)
}
}
impl From<UrlField> for SummarySchema {
fn from(value: UrlField) -> Self {
Self::Url(value)
}
}
impl From<CrawlSummaryField> for SummarySchema {
fn from(value: CrawlSummaryField) -> Self {
Self::CrawlSummary(value)
}
}
impl From<DocumentDescriptionField> for SummarySchema {
fn from(value: DocumentDescriptionField) -> Self {
Self::DocumentDescription(value)
}
}
impl From<DuplicateSummaryField> for SummarySchema {
fn from(value: DuplicateSummaryField) -> Self {
Self::DuplicateSummary(value)
}
}
impl From<EntityGenerationField> for SummarySchema {
fn from(value: EntityGenerationField) -> Self {
Self::EntityGeneration(value)
}
}
impl From<FileSummaryField> for SummarySchema {
fn from(value: FileSummaryField) -> Self {
Self::FileSummary(value)
}
}
impl From<FullTextEntityIndexField> for SummarySchema {
fn from(value: FullTextEntityIndexField) -> Self {
Self::FullTextEntityIndex(value)
}
}
impl From<HttpSummaryField> for SummarySchema {
fn from(value: HttpSummaryField) -> Self {
Self::HttpSummary(value)
}
}
impl From<LinkSummaryField> for SummarySchema {
fn from(value: LinkSummaryField) -> Self {
Self::LinkSummary(value)
}
}
impl From<RedirectSummaryField> for SummarySchema {
fn from(value: RedirectSummaryField) -> Self {
Self::RedirectSummary(value)
}
}
impl From<TextPileField> for SummarySchema {
fn from(value: TextPileField) -> Self {
Self::TextPile(value)
}
}
impl From<TokenField> for SummarySchema {
fn from(value: TokenField) -> Self {
Self::Token(value)
}
}
impl From<TokenStatisticsField> for SummarySchema {
fn from(value: TokenStatisticsField) -> Self {
Self::TokenStatistics(value)
}
}