essential_builder_db/
sql.rsmacro_rules! include_sql_str {
($subpath:expr) => {
include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/sql/", $subpath))
};
}
macro_rules! decl_const_sql_str {
($name:ident, $subpath:expr) => {
#[doc = include_sql_str!($subpath)]
pub const $name: &str = include_sql_str!($subpath);
};
}
pub mod create {
decl_const_sql_str!(SOLUTION, "create/solution.sql");
decl_const_sql_str!(SUBMISSION, "create/submission.sql");
decl_const_sql_str!(SOLUTION_FAILURE, "create/solution_failure.sql");
}
pub mod delete {
decl_const_sql_str!(SOLUTION, "delete/solution.sql");
decl_const_sql_str!(
OLDEST_SOLUTION_FAILURES,
"delete/oldest_solution_failures.sql"
);
}
pub mod insert {
decl_const_sql_str!(SOLUTION, "insert/solution.sql");
decl_const_sql_str!(SUBMISSION, "insert/submission.sql");
decl_const_sql_str!(SOLUTION_FAILURE, "insert/solution_failure.sql");
}
pub mod query {
decl_const_sql_str!(GET_SOLUTION, "query/get_solution.sql");
decl_const_sql_str!(LIST_SOLUTIONS, "query/list_solutions.sql");
decl_const_sql_str!(LIST_SUBMISSIONS, "query/list_submissions.sql");
decl_const_sql_str!(
LATEST_SOLUTION_FAILURES,
"query/latest_solution_failures.sql"
);
decl_const_sql_str!(LIST_SOLUTION_FAILURES, "query/list_solution_failures.sql");
}
pub mod table {
use super::create;
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
pub struct Table {
pub name: &'static str,
pub create: &'static str,
}
impl Table {
const fn new(name: &'static str, create: &'static str) -> Self {
Self { name, create }
}
}
pub const SOLUTION: Table = Table::new("solution", create::SOLUTION);
pub const SUBMISSION: Table = Table::new("submission", create::SUBMISSION);
pub const SOLUTION_FAILURE: Table = Table::new("solution_failure", create::SOLUTION_FAILURE);
pub const ALL: &[Table] = &[SOLUTION, SUBMISSION, SOLUTION_FAILURE];
}