diesel-derive-enum 0.4.0

Derive diesel boilerplate for using enums in databases
Documentation
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]

#[macro_use]
pub extern crate diesel;
#[macro_use]
extern crate diesel_derive_enum;

use diesel::prelude::*;

pub fn connection() -> PgConnection {
    let database_url =
        std::env::var("TEST_DATABASE_URL").expect("Env var TEST_DATABASE_URL not set");
    PgConnection::establish(&database_url).expect(&format!("Failed to connect to {}", database_url))
}

#[derive(Debug, PartialEq, DbEnum)]
#[PgType = "Just_Whatever"]
#[DieselType = "Some_Ugly_Renaming"]
pub enum RenameMe {
    #[db_rename = "mod"] Mod,
    #[db_rename = "type"] typo,
    #[db_rename = "with spaces"] WithASpace,
}

table! {
    use diesel::sql_types::Integer;
    use super::Some_Ugly_Renaming;
    test_rename {
        id -> Integer,
        renamed -> Some_Ugly_Renaming,
    }
}

#[derive(Insertable, Queryable, Identifiable, Debug, PartialEq)]
#[table_name = "test_rename"]
struct TestRename {
    id: i32,
    renamed: RenameMe,
}

#[test]
#[cfg(feature = "postgres")]
fn rename_round_trip() {
    use diesel::connection::SimpleConnection;
    use diesel::insert_into;
    let data = vec![
        TestRename {
            id: 1,
            renamed: RenameMe::Mod,
        },
        TestRename {
            id: 2,
            renamed: RenameMe::WithASpace,
        },
    ];
    let connection = connection();
    connection
        .batch_execute(
            r#"
        DROP TYPE IF EXISTS Just_Whatever;
        CREATE TYPE Just_Whatever AS ENUM ('mod', 'type', 'with spaces');
        CREATE TEMP TABLE IF NOT EXISTS test_rename (
            id SERIAL PRIMARY KEY,
            renamed Just_Whatever NOT NULL
        );
    "#,
        )
        .unwrap();
    let inserted = insert_into(test_rename::table)
        .values(&data)
        .get_results(&connection)
        .unwrap();
    assert_eq!(data, inserted);
    connection
        .batch_execute(
            r#"
            DROP TABLE test_rename;
            DROP TYPE Just_Whatever;
         "#,
        )
        .unwrap();
}