#[derive(SqlType)]
{
// Attributes available to this derive:
#[diesel]
#[postgres]
#[sqlite_type]
#[mysql_type]
}
Expand description
Implement necessary traits for adding a new sql type
This trait implements all necessary traits to define a new sql type. This is useful for adding support for unsupported or custom types on the sql side. The sql type will be usable for all backends you specified via the attributes listed below.
This derive will implement NotNull
, HasSqlType
and SingleValue
.
When using this derive macro,
you need to specify how the type is represented on various backends.
You don’t need to specify every backend,
only the ones supported by your type.
For PostgreSQL, add #[diesel(postgres_type(name = "pg_type_name", schema = "pg_schema_name"))]
or #[diesel(postgres_type(oid = "some_oid", array_oid = "some_oid"))]
for
builtin types.
For MySQL, specify which variant of MysqlType
should be used
by adding #[diesel(mysql_type(name = "Variant"))]
.
For SQLite, specify which variant of SqliteType
should be used
by adding #[diesel(sqlite_type(name = "Variant"))]
.
§Attributes
§Type attributes
#[diesel(postgres_type(name = "TypeName", schema = "public"))]
specifies support for a postgresql type with the nameTypeName
in the schemapublic
. Prefer this variant for types with no stable OID (== everything but the builtin types). It is possible to leaf of theschema
part. In that case, Diesel defaults to the default postgres search path.#[diesel(postgres_type(oid = 42, array_oid = 142))]
, specifies support for a postgresql type with the givenoid
andarray_oid
. This variant should only be used with types that have a stable OID.#[diesel(sqlite_type(name = "TypeName"))]
, specifies support for a sqlite type with the given name.TypeName
needs to be one of the possible values inSqliteType
#[diesel(mysql_type(name = "TypeName"))]
, specifies support for a mysql type with the given name.TypeName
needs to be one of the possible values inMysqlType