1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use TokenStream;
use ;
/// Derive macro that implements `sqlservice::entity::SqlEntity` for a struct.
///
/// Attributes:
/// - `#[sql_table("TableName", schema = "dbo")]` — on the struct
/// - `#[sql_primary_key(identity)]` — on one field
/// - `#[sql_column("ColName")]` — override column name
/// - `#[sql_ignore]` — exclude field from all SQL (not even SELECT)
/// - `#[sql_computed]` — DB-computed column; SELECT only, excluded from INSERT/UPDATE/MERGE
/// - `#[sql_default]` — server-side default; excluded from INSERT, included in SELECT/UPDATE
///
/// # Example
/// ```ignore
/// #[derive(SqlEntity)]
/// #[sql_table("Users", schema = "dbo")]
/// pub struct User {
/// #[sql_primary_key(identity)]
/// pub id: i32,
/// #[sql_column("UserName")]
/// pub name: String,
/// pub active: bool,
/// #[sql_computed]
/// pub full_name: String, // DB-computed, never written
/// #[sql_default]
/// pub created_at: chrono::DateTime<chrono::Utc>, // GETDATE() default, not in INSERT
/// }
/// ```