Skip to content

Commit 8d0706b

Browse files
committed
refactor: rename enum params.
1 parent 27902a1 commit 8d0706b

35 files changed

+602
-567
lines changed
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
use crate::base::cpp_object::CppObject;
2+
use crate::utils::ToCString;
3+
use crate::winq::column::Column;
4+
use crate::winq::expression::Expression;
5+
use crate::winq::expression_convertible::ExpressionConvertibleTrait;
6+
use crate::winq::expression_operable::ExpressionOperable;
7+
use crate::winq::identifier::{CPPType, Identifier};
8+
use libc::c_longlong;
9+
use std::ffi::{c_double, c_void, CString};
10+
11+
/// 支持 bool, i8, i16, i32, i64, f32, f64, String, &str, Option<&dyn ExpressionConvertibleTrait>
12+
pub enum BasicExpression<'a> {
13+
Bool(bool),
14+
Int(i64),
15+
Float(f64),
16+
String(String),
17+
ExpressionConvertible(Option<&'a dyn ExpressionConvertibleTrait>),
18+
}
19+
20+
impl BasicExpression<'_> {
21+
pub(crate) fn get_params(self) -> (CPPType, c_longlong, c_double, Option<CString>) {
22+
match self {
23+
BasicExpression::Bool(value) => {
24+
let value = if value { 1 } else { 0 };
25+
(CPPType::Bool, value as c_longlong, 0 as c_double, None)
26+
}
27+
BasicExpression::Int(value) => {
28+
(CPPType::Int, value as c_longlong, 0 as c_double, None)
29+
}
30+
BasicExpression::Float(value) => {
31+
(CPPType::Double, 0 as c_longlong, value as c_double, None)
32+
}
33+
BasicExpression::String(value) => {
34+
let cstr = value.as_str().to_cstring();
35+
(CPPType::String, 0 as c_longlong, 0 as c_double, Some(cstr))
36+
}
37+
BasicExpression::ExpressionConvertible(obj_opt) => {
38+
let (cpp_type, cpp_obj) = match obj_opt {
39+
None => (CPPType::Null, 0 as *mut c_void),
40+
Some(obj) => (Identifier::get_cpp_type(obj), CppObject::get(obj)),
41+
};
42+
(cpp_type, cpp_obj as c_longlong, 0 as c_double, None)
43+
}
44+
}
45+
}
46+
}
47+
48+
impl<'a> From<bool> for BasicExpression<'a> {
49+
fn from(value: bool) -> Self {
50+
BasicExpression::Bool(value)
51+
}
52+
}
53+
54+
/// 宏定义:为所有整数类型实现 From trait
55+
macro_rules! impl_from_int_types {
56+
($($int_type:ty),* $(,)?) => {
57+
$(
58+
impl<'a> From<$int_type> for BasicExpression<'a> {
59+
fn from(value: $int_type) -> Self {
60+
BasicExpression::Int(value as i64)
61+
}
62+
}
63+
)*
64+
};
65+
}
66+
67+
/// 使用宏为所有整数类型实现 From trait
68+
impl_from_int_types!(i8, i16, i32, i64);
69+
70+
/// 宏定义:为所有浮点类型实现 From trait
71+
macro_rules! impl_from_float_types {
72+
($($float_type:ty),* $(,)?) => {
73+
$(
74+
impl<'a> From<$float_type> for BasicExpression<'a> {
75+
fn from(value: $float_type) -> Self {
76+
BasicExpression::Float(value as f64)
77+
}
78+
}
79+
)*
80+
};
81+
}
82+
83+
/// 使用宏为所有浮点类型实现 From trait
84+
impl_from_float_types!(f32, f64);
85+
86+
impl<'a> From<String> for BasicExpression<'a> {
87+
fn from(value: String) -> Self {
88+
BasicExpression::String(value)
89+
}
90+
}
91+
92+
impl<'a> From<&'a str> for BasicExpression<'a> {
93+
fn from(value: &'a str) -> Self {
94+
BasicExpression::String(value.to_string())
95+
}
96+
}
97+
98+
impl<'a> From<Option<&'a dyn ExpressionConvertibleTrait>> for BasicExpression<'a> {
99+
fn from(value: Option<&'a dyn ExpressionConvertibleTrait>) -> Self {
100+
BasicExpression::ExpressionConvertible(value)
101+
}
102+
}
103+
104+
impl<'a> From<Option<&'a ExpressionOperable>> for BasicExpression<'a> {
105+
fn from(v: Option<&'a ExpressionOperable>) -> Self {
106+
v.map(|x| x as &dyn ExpressionConvertibleTrait).into()
107+
}
108+
}
109+
110+
impl<'a> From<Option<&'a Expression>> for BasicExpression<'a> {
111+
fn from(value: Option<&'a Expression>) -> Self {
112+
value.map(|x| x as &dyn ExpressionConvertibleTrait).into()
113+
}
114+
}
115+
116+
impl<'a> From<&'a Expression> for BasicExpression<'a> {
117+
fn from(value: &'a Expression) -> Self {
118+
BasicExpression::ExpressionConvertible(Some(value))
119+
}
120+
}
121+
122+
impl<'a> From<Option<&'a Column>> for BasicExpression<'a> {
123+
fn from(value: Option<&'a Column>) -> Self {
124+
value.map(|x| x as &dyn ExpressionConvertibleTrait).into()
125+
}
126+
}
127+
128+
impl<'a> From<&'a Column> for BasicExpression<'a> {
129+
fn from(value: &'a Column) -> Self {
130+
BasicExpression::ExpressionConvertible(Some(value))
131+
}
132+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
use crate::winq::expression_convertible::ExpressionConvertibleTrait;
2+
3+
/// 支持 i8, i16, i32, i64, Option<&dyn ExpressionConvertibleTrait>
4+
pub enum IntExpression<'a> {
5+
Int(i64),
6+
ExpressionConvertible(Option<&'a dyn ExpressionConvertibleTrait>),
7+
}
8+
9+
/// 宏定义:为所有整数类型实现 From trait
10+
macro_rules! impl_from_int_types {
11+
($($int_type:ty),* $(,)?) => {
12+
$(
13+
impl<'a> From<$int_type> for IntExpression<'a> {
14+
fn from(value: $int_type) -> Self {
15+
IntExpression::Int(value as i64)
16+
}
17+
}
18+
)*
19+
};
20+
}
21+
22+
/// 使用宏为所有整数类型实现 From trait
23+
impl_from_int_types!(i8, i16, i32, i64);
24+
25+
impl<'a> From<Option<&'a dyn ExpressionConvertibleTrait>> for IntExpression<'a> {
26+
fn from(value: Option<&'a dyn ExpressionConvertibleTrait>) -> Self {
27+
IntExpression::ExpressionConvertible(value)
28+
}
29+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
use crate::winq::column::ColumnTrait;
2+
3+
/// 支持 String, &str, Column
4+
pub enum StringColumn<'a> {
5+
String(String),
6+
Column(&'a dyn ColumnTrait),
7+
}
8+
9+
impl<'a> From<String> for StringColumn<'a> {
10+
fn from(value: String) -> Self {
11+
StringColumn::String(value)
12+
}
13+
}
14+
15+
impl<'a> From<&str> for StringColumn<'a> {
16+
fn from(value: &str) -> Self {
17+
StringColumn::String(value.to_string())
18+
}
19+
}
20+
21+
impl<'a, T: ColumnTrait> From<&'a T> for StringColumn<'a> {
22+
fn from(value: &'a T) -> Self {
23+
StringColumn::Column(value)
24+
}
25+
}

src/rust/wcdb/src/base/param/string_expression_convertible_param.rs renamed to src/rust/wcdb/src/base/param/enum_string_expression.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,38 +5,38 @@ use crate::winq::identifier::{CPPType, Identifier};
55
use std::ffi::{c_void, CString};
66

77
/// 支持 String, &str, &dyn ExpressionConvertibleTrait
8-
pub enum StringExpressionConvertibleParam<'a> {
8+
pub enum StringExpression<'a> {
99
String(String),
1010
ExpressionConvertible(&'a dyn ExpressionConvertibleTrait),
1111
}
1212

13-
impl StringExpressionConvertibleParam<'_> {
13+
impl StringExpression<'_> {
1414
pub(crate) fn get_params(self) -> (CPPType, *mut c_void, Option<CString>) {
1515
match self {
16-
StringExpressionConvertibleParam::String(str) => {
16+
StringExpression::String(str) => {
1717
(CPPType::String, 0 as *mut c_void, Some(str.to_cstring()))
1818
}
19-
StringExpressionConvertibleParam::ExpressionConvertible(exp) => {
19+
StringExpression::ExpressionConvertible(exp) => {
2020
(Identifier::get_cpp_type(exp), CppObject::get(exp), None)
2121
}
2222
}
2323
}
2424
}
2525

26-
impl<'a> From<String> for StringExpressionConvertibleParam<'a> {
26+
impl<'a> From<String> for StringExpression<'a> {
2727
fn from(value: String) -> Self {
28-
StringExpressionConvertibleParam::String(value)
28+
StringExpression::String(value)
2929
}
3030
}
3131

32-
impl<'a> From<&str> for StringExpressionConvertibleParam<'a> {
32+
impl<'a> From<&str> for StringExpression<'a> {
3333
fn from(value: &str) -> Self {
34-
StringExpressionConvertibleParam::String(value.to_string())
34+
StringExpression::String(value.to_string())
3535
}
3636
}
3737

38-
impl<'a, T: ExpressionConvertibleTrait> From<&'a T> for StringExpressionConvertibleParam<'a> {
38+
impl<'a, T: ExpressionConvertibleTrait> From<&'a T> for StringExpression<'a> {
3939
fn from(value: &'a T) -> Self {
40-
StringExpressionConvertibleParam::ExpressionConvertible(value)
40+
StringExpression::ExpressionConvertible(value)
4141
}
4242
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
use crate::winq::indexed_column_convertible::IndexedColumnConvertibleTrait;
2+
3+
/// 支持 String, &str, &dyn IndexedColumnConvertibleTrait
4+
pub enum StringIndexedColumn<'a> {
5+
String(String),
6+
IndexedColumnConvertible(&'a dyn IndexedColumnConvertibleTrait),
7+
}
8+
9+
impl<'a> From<String> for StringIndexedColumn<'a> {
10+
fn from(value: String) -> Self {
11+
StringIndexedColumn::String(value)
12+
}
13+
}
14+
15+
impl<'a> From<&'a str> for StringIndexedColumn<'a> {
16+
fn from(value: &'a str) -> Self {
17+
StringIndexedColumn::String(value.to_string())
18+
}
19+
}
20+
21+
impl<'a, T: IndexedColumnConvertibleTrait> From<&'a T> for StringIndexedColumn<'a> {
22+
fn from(value: &'a T) -> Self {
23+
StringIndexedColumn::IndexedColumnConvertible(value)
24+
}
25+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
use crate::winq::qualified_table::QualifiedTable;
2+
3+
/// 支持 String, &str, &QualifiedTable
4+
pub enum StringQualifiedTable<'a> {
5+
String(String),
6+
QualifiedTable(&'a QualifiedTable),
7+
}
8+
9+
impl<'a> From<String> for StringQualifiedTable<'a> {
10+
fn from(value: String) -> Self {
11+
StringQualifiedTable::String(value)
12+
}
13+
}
14+
15+
impl<'a> From<&str> for StringQualifiedTable<'a> {
16+
fn from(value: &str) -> Self {
17+
StringQualifiedTable::String(value.to_string())
18+
}
19+
}
20+
21+
impl<'a> From<&'a QualifiedTable> for StringQualifiedTable<'a> {
22+
fn from(value: &'a QualifiedTable) -> Self {
23+
StringQualifiedTable::QualifiedTable(value)
24+
}
25+
}
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
use crate::winq::result_column_convertible_trait::ResultColumnConvertibleTrait;
22

33
/// 支持 String, &str, &dyn ResultColumnConvertibleTrait
4-
pub enum StringResultColumnConvertibleParam<'a> {
4+
pub enum StringResultColumn<'a> {
55
String(String),
66
ResultColumn(&'a dyn ResultColumnConvertibleTrait),
77
}
88

9-
impl<'a> From<String> for StringResultColumnConvertibleParam<'a> {
9+
impl<'a> From<String> for StringResultColumn<'a> {
1010
fn from(value: String) -> Self {
11-
StringResultColumnConvertibleParam::String(value)
11+
StringResultColumn::String(value)
1212
}
1313
}
1414

15-
impl<'a> From<&str> for StringResultColumnConvertibleParam<'a> {
15+
impl<'a> From<&str> for StringResultColumn<'a> {
1616
fn from(value: &str) -> Self {
17-
StringResultColumnConvertibleParam::String(value.to_string())
17+
StringResultColumn::String(value.to_string())
1818
}
1919
}
2020

21-
impl<'a, T: ResultColumnConvertibleTrait> From<&'a T> for StringResultColumnConvertibleParam<'a> {
21+
impl<'a, T: ResultColumnConvertibleTrait> From<&'a T> for StringResultColumn<'a> {
2222
fn from(value: &'a T) -> Self {
23-
StringResultColumnConvertibleParam::ResultColumn(value)
23+
StringResultColumn::ResultColumn(value)
2424
}
2525
}

src/rust/wcdb/src/base/param/string_schema_param.rs renamed to src/rust/wcdb/src/base/param/enum_string_schema.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,39 +5,39 @@ use crate::winq::schema::Schema;
55
use std::ffi::{c_void, CString};
66

77
/// 支持 String, &str, Option<&Schema>
8-
pub enum StringSchemaParam<'a> {
8+
pub enum StringSchema<'a> {
99
String(String),
1010
Schema(Option<&'a Schema>),
1111
}
1212

13-
impl StringSchemaParam<'_> {
13+
impl StringSchema<'_> {
1414
pub(crate) fn get_params(self) -> (CPPType, *mut c_void, Option<CString>) {
1515
match self {
16-
StringSchemaParam::String(str) => {
16+
StringSchema::String(str) => {
1717
(CPPType::String, 0 as *mut c_void, Some(str.to_cstring()))
1818
}
19-
StringSchemaParam::Schema(schema_opt) => match schema_opt {
19+
StringSchema::Schema(schema_opt) => match schema_opt {
2020
None => (CPPType::Null, 0 as *mut c_void, None),
2121
Some(sc) => (Identifier::get_cpp_type(sc), CppObject::get(sc), None),
2222
},
2323
}
2424
}
2525
}
2626

27-
impl<'a> From<String> for StringSchemaParam<'a> {
27+
impl<'a> From<String> for StringSchema<'a> {
2828
fn from(value: String) -> Self {
29-
StringSchemaParam::String(value)
29+
StringSchema::String(value)
3030
}
3131
}
3232

33-
impl<'a> From<&str> for StringSchemaParam<'a> {
33+
impl<'a> From<&str> for StringSchema<'a> {
3434
fn from(value: &str) -> Self {
35-
StringSchemaParam::String(value.to_string())
35+
StringSchema::String(value.to_string())
3636
}
3737
}
3838

39-
impl<'a> From<Option<&'a Schema>> for StringSchemaParam<'a> {
39+
impl<'a> From<Option<&'a Schema>> for StringSchema<'a> {
4040
fn from(value: Option<&'a Schema>) -> Self {
41-
StringSchemaParam::Schema(value)
41+
StringSchema::Schema(value)
4242
}
4343
}

0 commit comments

Comments
 (0)