#![allow(dead_code, private_interfaces)]
use umbral::orm::{ForeignKey, Model, SqlType};
#[derive(Debug, Clone, sqlx::FromRow, serde::Serialize, serde::Deserialize, umbral::orm::Model)]
#[umbral(table = "srx_user")]
struct User {
id: i64,
name: String,
}
#[derive(Debug, Clone, sqlx::FromRow, serde::Serialize, serde::Deserialize, umbral::orm::Model)]
#[umbral(table = "srx_post")]
struct Post {
id: i64,
title: String,
#[sqlx(rename = "author_id")]
author: ForeignKey<User>,
#[sqlx(rename = "view_count")]
views: i32,
}
#[test]
fn sqlx_rename_becomes_the_column_name() {
let by_field: std::collections::HashMap<&str, &umbral::orm::FieldSpec> =
<Post as Model>::FIELDS
.iter()
.map(|f| (f.name, f))
.collect();
assert!(
by_field.contains_key("author_id"),
"the FK column must be `author_id` (the sqlx rename), got fields: {:?}",
by_field.keys().collect::<Vec<_>>()
);
assert!(
by_field.contains_key("view_count"),
"the renamed plain column must be `view_count`"
);
assert_eq!(by_field.get("author_id").unwrap().ty, SqlType::ForeignKey);
assert!(
!by_field.contains_key("author"),
"the Rust field name `author` must not be the column name"
);
let _pred = post::AUTHOR.eq(1);
let _pred2 = post::VIEWS.gt(10);
}