use std::fmt;
pub const LOOKUP_SEP: &str = "__";
pub const DEFERRED: &str = "DEFERRED";
pub const IMMEDIATE: &str = "IMMEDIATE";
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum OnConflict {
DoNothing,
Update,
Raise,
}
impl fmt::Display for OnConflict {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::DoNothing => write!(f, "DO NOTHING"),
Self::Update => write!(f, "UPDATE"),
Self::Raise => write!(f, "RAISE"),
}
}
}
#[cfg(test)]
mod tests {
use super::{DEFERRED, IMMEDIATE, LOOKUP_SEP, OnConflict};
#[test]
fn lookup_sep_matches_django_separator() {
assert_eq!(LOOKUP_SEP, "__");
}
#[test]
fn on_conflict_display_do_nothing() {
assert_eq!(OnConflict::DoNothing.to_string(), "DO NOTHING");
}
#[test]
fn on_conflict_display_update() {
assert_eq!(OnConflict::Update.to_string(), "UPDATE");
}
#[test]
fn on_conflict_display_raise() {
assert_eq!(OnConflict::Raise.to_string(), "RAISE");
}
#[test]
fn transaction_mode_constants_match_expected_values() {
assert_eq!(DEFERRED, "DEFERRED");
assert_eq!(IMMEDIATE, "IMMEDIATE");
}
}