#[doc = include_str!("../../../doc-tests/migration/paths_snapshot_dir.md")]
pub fn snapshot_dir(migrations_path: &str) -> String {
format!("{}/snapshots", migrations_path)
}
#[doc = include_str!("../../../doc-tests/migration/paths_snapshot_file.md")]
pub fn snapshot_file_path(migrations_path: &str, table_name: &str) -> String {
format!("{}/snapshots/{}.rs", migrations_path, table_name)
}
#[doc = include_str!("../../../doc-tests/migration/paths_seaorm_module.md")]
pub fn seaorm_create_module_name(timestamp: &str, table_name: &str) -> String {
format!("m{}_create_{}_table", timestamp, table_name)
}
#[doc = include_str!("../../../doc-tests/migration/paths_seaorm_file.md")]
pub fn seaorm_create_file_path(migrations_path: &str, timestamp: &str, table_name: &str) -> String {
format!(
"{}/m{}_create_{}_table.rs",
migrations_path, timestamp, table_name
)
}
pub fn lib_path(migrations_path: &str) -> String {
format!("{}/lib.rs", migrations_path)
}
pub fn extend_snapshot_dir(migrations_path: &str) -> String {
format!("{}/snapshots/runique", migrations_path)
}
pub fn extend_snapshot_file_path(migrations_path: &str, table_name: &str) -> String {
format!("{}/snapshots/runique/{}.rs", migrations_path, table_name)
}
#[cfg(test)]
mod tests {
use super::*;
const BASE: &str = "/project/migration/src";
const TABLE: &str = "eihwaz_users";
const TS: &str = "20250218_143000";
#[test]
fn snapshot_dir_standard() {
assert_eq!(snapshot_dir(BASE), "/project/migration/src/snapshots");
}
#[test]
fn snapshot_dir_relative() {
assert_eq!(snapshot_dir("migrations"), "migrations/snapshots");
}
#[test]
fn snapshot_file_path_standard() {
assert_eq!(
snapshot_file_path(BASE, TABLE),
"/project/migration/src/snapshots/eihwaz_users.rs"
);
}
#[test]
fn snapshot_file_path_simple_table() {
assert_eq!(
snapshot_file_path("migrations", "posts"),
"migrations/snapshots/posts.rs"
);
}
#[test]
fn seaorm_create_module_name_format() {
assert_eq!(
seaorm_create_module_name(TS, TABLE),
"m20250218_143000_create_eihwaz_users_table"
);
}
#[test]
fn seaorm_create_module_name_simple() {
assert_eq!(
seaorm_create_module_name("20260118_003649", "users"),
"m20260118_003649_create_users_table"
);
}
#[test]
fn seaorm_create_file_path_standard() {
assert_eq!(
seaorm_create_file_path(BASE, TS, TABLE),
"/project/migration/src/m20250218_143000_create_eihwaz_users_table.rs"
);
}
#[test]
fn seaorm_create_file_path_simple() {
assert_eq!(
seaorm_create_file_path("migrations", "20260118_003649", "users"),
"migrations/m20260118_003649_create_users_table.rs"
);
}
#[test]
fn seaorm_create_module_name_matches_file_stem() {
let module = seaorm_create_module_name(TS, TABLE);
let file = seaorm_create_file_path(BASE, TS, TABLE);
assert!(file.ends_with(&format!("{}.rs", module)));
}
#[test]
fn lib_path_standard() {
assert_eq!(lib_path(BASE), "/project/migration/src/lib.rs");
}
#[test]
fn lib_path_relative() {
assert_eq!(lib_path("migrations"), "migrations/lib.rs");
}
#[test]
fn snapshot_is_inside_snapshot_dir() {
let dir = snapshot_dir(BASE);
let file = snapshot_file_path(BASE, TABLE);
assert!(file.starts_with(&dir));
}
}