Derive Macro Entity

Source
#[derive(Entity)]
{
    // Attributes available to this derive:
    #[sqlx]
    #[column]
    #[postgres]
    #[sqlite]
    #[mysql]
}
Expand description

Derive macro to automatically derive the Schema and Bind traits.

§The column directive

The schema for the column can provided using the column directive:

use miniorm::prelude::*;
use sqlx::FromRow;

#[derive(Debug, Clone, Eq, PartialEq, FromRow, Entity)]
struct Todo {
    #[column(TEXT NOT NULL)]
    description: String,

    #[column(BOOLEAN NOT NULL DEFAULT false)]
    done: bool,
}

in which case the Schema and Bind trait will be derived for all supported database types.

Requires the full feature flag.

§The backend-specific directive

If only a specific backend is necessary, one of the dedicated backend-specific directive should be used instead. For instance, if Schema and Bind should only be derived for postgres:

use miniorm::prelude::*;
use sqlx::FromRow;

#[derive(Debug, Clone, Eq, PartialEq, FromRow, Entity)]
struct Todo {
    #[postgres(TEXT NOT NULL)]
    description: String,

    #[postgres(BOOLEAN NOT NULL DEFAULT false)]
    done: bool,
}
This example requires the postgres feature flag.

§The sqlx directive

At the moment, only the following sqlx directives for FromRow are supported:

  • skip
  • rename
  • json
use miniorm::prelude::*;
use sqlx::FromRow;

#[derive(Debug, Clone, Eq, PartialEq, FromRow, Entity)]
struct Todo {
    #[postgres(TEXT NOT NULL)]
    description: String,

    #[postgres(BOOLEAN NOT NULL DEFAULT false)]
    #[sqlx(rename = "DONE")]
    done: bool,

    #[sqlx(skip)]
    metadata: String,
}