rullst-orm-macros 12.1.1

Procedural macros and derive attributes for the rullst-orm Active Record pattern.
Documentation
use proc_macro2::TokenStream;
use quote::quote;

pub(super) fn type_codecs(name: &syn::Ident, type_name: &str) -> TokenStream {
    #[cfg(feature = "runtime-driver-codecs")]
    {
        quote! {
            rullst_orm::__rullst_enum_sqlite!(#name);
            rullst_orm::__rullst_enum_mysql!(#name);
            rullst_orm::__rullst_enum_postgres!(#name, #type_name);
        }
    }
    #[cfg(not(feature = "runtime-driver-codecs"))]
    {
        quote! {
        impl rullst_orm::_sqlx::Type<rullst_orm::_sqlx::Sqlite> for #name {
            fn type_info() -> rullst_orm::_sqlx::sqlite::SqliteTypeInfo {
                <str as rullst_orm::_sqlx::Type<rullst_orm::_sqlx::Sqlite>>::type_info()
            }
        }

        impl rullst_orm::_sqlx::Type<rullst_orm::_sqlx::MySql> for #name {
            fn type_info() -> rullst_orm::_sqlx::mysql::MySqlTypeInfo {
                rullst_orm::_sqlx::mysql::MySqlTypeInfo::__enum()
            }

            fn compatible(type_info: &rullst_orm::_sqlx::mysql::MySqlTypeInfo) -> bool {
                <str as rullst_orm::_sqlx::Type<rullst_orm::_sqlx::MySql>>::compatible(type_info)
            }
        }

        impl rullst_orm::_sqlx::Type<rullst_orm::_sqlx::Postgres> for #name {
            fn type_info() -> rullst_orm::_sqlx::postgres::PgTypeInfo {
                rullst_orm::_sqlx::postgres::PgTypeInfo::with_name(#type_name)
            }
        }

        impl rullst_orm::_sqlx::postgres::PgHasArrayType for #name {
            fn array_type_info() -> rullst_orm::_sqlx::postgres::PgTypeInfo {
                rullst_orm::_sqlx::postgres::PgTypeInfo::array_of(#type_name)
            }
        }
        }
    }
}