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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/// `FieldsAttributeMacro` trait 定义了处理字段属性宏的功能。
///
/// 这个 trait 主要用于解析和处理 `#[fields(...)]` 属性宏,该宏用于
/// 定制 SQL 语句中的字段部分。通过实现这个 trait,可以根据结构体
/// 字段上的 `#[fields]` 宏指定的参数生成对应的字段列表。
// 目前需要考虑到的内容有:
// 1. 生成查询字段,需要有 query_field, returning_field, ignore
// 2. 生成 update 参数 需要有 set(key = $1), where(condition [] $3), ignore
// 3. 生成 insert 语句需要的参数 fields([field1, field2, field3]), values($1, $2, $3), ignore
// 4. 生成 delete 语句需要的参数 where(condition [] $3), ignore
// 5. 生成 select 语句需要的参数
//
// 最终整理有:
// set [field1 = $1, field2 = $2, ...]
// where [field1 [condition] $1, field2 [condition] $2, ...]
// values ([$1, $2, $3, ...])
// fields ([field1, field2, field3, ...])
// select ([select1, select2, select3, ...])
/// `SelectAttributeMacro` trait 定义了处理字段属性宏的功能。
///
/// 这个 trait 主要用于解析和处理 `#[select(...)]` 属性宏,该宏用于
/// 定制 SQL 语句中的字段部分。通过实现这个 trait,可以根据结构体
/// 字段上的 `#[select]` 宏指定的参数生成对应的字段列表。
/// `ValuesAttributeMacro` trait 定义了处理字段属性宏的功能。
///
/// 这个 trait 主要用于解析和处理 `#[values(...)]` 属性宏,该宏用于
/// 定制 SQL 语句中的字段部分。通过实现这个 trait,可以根据结构体
/// 字段上的 `#[values]` 宏指定的参数生成对应的字段列表。
/// `WhereAttributeMacro` trait 定义了处理字段属性宏的功能。
///
/// 这个 trait 主要用于解析和处理 `#[where(...)]` 属性宏,该宏用于
/// 定制 SQL 语句中的字段部分。通过实现这个 trait,可以根据结构体
/// 字段上的 `#[where]` 宏指定的参数生成对应的字段列表。
/// `SetAttributeMacro` trait 定义了处理字段属性宏的功能。
///
/// 这个 trait 主要用于解析和处理 `#[set(...)]` 属性宏,该宏用于
/// 定制 SQL 语句中的字段部分。通过实现这个 trait,可以根据结构体
/// 字段上的 `#[set]` 宏指定的参数生成对应的字段列表。