orm_rs/methods/
table_name.rs1use std::any::type_name;
2use inflector::{string::{demodulize, pluralize}, cases::snakecase};
3
4pub fn table_name<T>() -> String where T: ?Sized {
5 let full_namespace = type_name::<T>();
7 let struct_name = demodulize::demodulize(&full_namespace);
9 let snake_struct_name = snakecase::to_snake_case(&struct_name);
11 pluralize::to_plural(&snake_struct_name)
13}
14
15#[cfg(test)]
16mod tests {
17 use super::*;
18 #[test]
19 fn it_works() {
20 struct User {}
22 assert_eq!(table_name::<User>(), "users");
23 struct UserRole {}
25 assert_eq!(table_name::<UserRole>(), "user_roles");
26 }
27}