Skip to content

Commit 81991e6

Browse files
committed
Fix enum
1 parent 911ce96 commit 81991e6

4 files changed

+20
-18
lines changed

crates/vespertide-exporter/src/seaorm/mod.rs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -204,28 +204,30 @@ fn format_default_value(value: &str, column_type: &ColumnType) -> String {
204204
ColumnType::Complex(ComplexColumnType::Numeric { .. }) => {
205205
format!("default_value = {}", cleaned)
206206
}
207-
// Enum type: use enum variant format
208-
ColumnType::Complex(ComplexColumnType::Enum { name, values }) => {
209-
let enum_name = to_pascal_case(name);
210-
let variant = match values {
207+
// Enum type: use the actual database value (string or number), not Rust enum variant
208+
ColumnType::Complex(ComplexColumnType::Enum { values, .. }) => {
209+
match values {
211210
EnumValues::String(_) => {
212-
// String enum: cleaned is the string value, convert to PascalCase
213-
to_pascal_case(cleaned)
211+
// String enum: use the string value as-is with quotes
212+
format!("default_value = \"{}\"", cleaned)
214213
}
215214
EnumValues::Integer(int_values) => {
216-
// Integer enum: cleaned is a number, find the matching variant name
215+
// Integer enum: can be either a number or a variant name
216+
// Try to parse as number first
217217
if let Ok(num) = cleaned.parse::<i32>() {
218-
int_values
219-
.iter()
220-
.find(|v| v.value == num)
221-
.map(|v| to_pascal_case(&v.name))
222-
.unwrap_or_else(|| to_pascal_case(cleaned))
218+
// Already a number, use as-is
219+
format!("default_value = {}", num)
223220
} else {
224-
to_pascal_case(cleaned)
221+
// It's a variant name, find the corresponding numeric value
222+
let numeric_value = int_values
223+
.iter()
224+
.find(|v| v.name.eq_ignore_ascii_case(cleaned))
225+
.map(|v| v.value)
226+
.unwrap_or(0); // Default to 0 if not found
227+
format!("default_value = {}", numeric_value)
225228
}
226229
}
227-
};
228-
format!("default_value = {}::{}", enum_name, variant)
230+
}
229231
}
230232
// All other types: use quotes
231233
_ => {

crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__integer_enum_default_value_snapshots@1.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pub enum TaskStatus {
1919
pub struct Model {
2020
#[sea_orm(primary_key)]
2121
pub id: i32,
22-
#[sea_orm(default_value = TaskStatus::InProgress)]
22+
#[sea_orm(default_value = 1)]
2323
pub status: TaskStatus,
2424
}
2525

crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__integer_enum_default_value_snapshots@pending_status.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pub enum TaskStatus {
1919
pub struct Model {
2020
#[sea_orm(primary_key)]
2121
pub id: i32,
22-
#[sea_orm(default_value = TaskStatus::PendingStatus)]
22+
#[sea_orm(default_value = 0)]
2323
pub status: TaskStatus,
2424
}
2525

crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_with_default.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ pub enum TaskStatus {
2222
pub struct Model {
2323
#[sea_orm(primary_key)]
2424
pub id: i32,
25-
#[sea_orm(default_value = TaskStatus::Pending)]
25+
#[sea_orm(default_value = "pending")]
2626
pub status: TaskStatus,
2727
#[sea_orm(default_value = 0)]
2828
pub priority: i32,

0 commit comments

Comments
 (0)