use crate::types::DynIden;
#[derive(Debug, Clone)]
#[allow(dead_code)]
pub enum CommentTarget {
Table(DynIden),
Column(DynIden, DynIden),
Index(DynIden),
View(DynIden),
MaterializedView(DynIden),
Sequence(DynIden),
Schema(DynIden),
Database(DynIden),
Function(DynIden),
Trigger(DynIden, DynIden),
Type(DynIden),
}
#[cfg(test)]
mod tests {
use super::*;
use crate::types::IntoIden;
use rstest::*;
#[rstest]
fn test_comment_target_table() {
let target = CommentTarget::Table("users".into_iden());
match target {
CommentTarget::Table(table) => {
assert_eq!(table.to_string(), "users");
}
_ => panic!("Expected CommentTarget::Table"),
}
}
#[rstest]
fn test_comment_target_column() {
let target = CommentTarget::Column("users".into_iden(), "email".into_iden());
match target {
CommentTarget::Column(table, column) => {
assert_eq!(table.to_string(), "users");
assert_eq!(column.to_string(), "email");
}
_ => panic!("Expected CommentTarget::Column"),
}
}
#[rstest]
fn test_comment_target_index() {
let target = CommentTarget::Index("idx_users_email".into_iden());
match target {
CommentTarget::Index(index) => {
assert_eq!(index.to_string(), "idx_users_email");
}
_ => panic!("Expected CommentTarget::Index"),
}
}
#[rstest]
fn test_comment_target_view() {
let target = CommentTarget::View("active_users".into_iden());
match target {
CommentTarget::View(view) => {
assert_eq!(view.to_string(), "active_users");
}
_ => panic!("Expected CommentTarget::View"),
}
}
#[rstest]
fn test_comment_target_materialized_view() {
let target = CommentTarget::MaterializedView("user_stats".into_iden());
match target {
CommentTarget::MaterializedView(view) => {
assert_eq!(view.to_string(), "user_stats");
}
_ => panic!("Expected CommentTarget::MaterializedView"),
}
}
#[rstest]
fn test_comment_target_sequence() {
let target = CommentTarget::Sequence("user_id_seq".into_iden());
match target {
CommentTarget::Sequence(seq) => {
assert_eq!(seq.to_string(), "user_id_seq");
}
_ => panic!("Expected CommentTarget::Sequence"),
}
}
#[rstest]
fn test_comment_target_schema() {
let target = CommentTarget::Schema("public".into_iden());
match target {
CommentTarget::Schema(schema) => {
assert_eq!(schema.to_string(), "public");
}
_ => panic!("Expected CommentTarget::Schema"),
}
}
#[rstest]
fn test_comment_target_database() {
let target = CommentTarget::Database("mydb".into_iden());
match target {
CommentTarget::Database(db) => {
assert_eq!(db.to_string(), "mydb");
}
_ => panic!("Expected CommentTarget::Database"),
}
}
#[rstest]
fn test_comment_target_function() {
let target = CommentTarget::Function("calculate_total".into_iden());
match target {
CommentTarget::Function(func) => {
assert_eq!(func.to_string(), "calculate_total");
}
_ => panic!("Expected CommentTarget::Function"),
}
}
#[rstest]
fn test_comment_target_trigger() {
let target = CommentTarget::Trigger("update_timestamp".into_iden(), "users".into_iden());
match target {
CommentTarget::Trigger(trigger, table) => {
assert_eq!(trigger.to_string(), "update_timestamp");
assert_eq!(table.to_string(), "users");
}
_ => panic!("Expected CommentTarget::Trigger"),
}
}
#[rstest]
fn test_comment_target_type() {
let target = CommentTarget::Type("user_status".into_iden());
match target {
CommentTarget::Type(typ) => {
assert_eq!(typ.to_string(), "user_status");
}
_ => panic!("Expected CommentTarget::Type"),
}
}
}