Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .changepacks/changepack_log_704kg_iEBBm4fOMKrftai.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"changes":{"crates/vespertide-macro/Cargo.toml":"Patch","crates/vespertide-loader/Cargo.toml":"Patch","crates/vespertide-query/Cargo.toml":"Patch","crates/vespertide-core/Cargo.toml":"Patch","crates/vespertide/Cargo.toml":"Patch","crates/vespertide-naming/Cargo.toml":"Patch","crates/vespertide-exporter/Cargo.toml":"Patch","crates/vespertide-planner/Cargo.toml":"Patch","crates/vespertide-config/Cargo.toml":"Patch","crates/vespertide-cli/Cargo.toml":"Patch"},"note":"Add serde_rename_all","date":"2026-01-12T07:12:06.946795300Z"}
20 changes: 10 additions & 10 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions crates/vespertide-config/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,26 @@ pub struct SeaOrmConfig {
/// Additional derive macros to add to generated entity model types.
#[serde(default)]
pub extra_model_derives: Vec<String>,
/// Naming case for serde rename_all attribute on generated enums.
/// Default: `Camel` (generates `#[serde(rename_all = "camelCase")]`)
#[serde(default = "default_enum_naming_case")]
pub enum_naming_case: NameCase,
}

fn default_extra_enum_derives() -> Vec<String> {
vec!["vespera::Schema".to_string()]
}

fn default_enum_naming_case() -> NameCase {
NameCase::Camel
}

impl Default for SeaOrmConfig {
fn default() -> Self {
Self {
extra_enum_derives: default_extra_enum_derives(),
extra_model_derives: Vec::new(),
enum_naming_case: default_enum_naming_case(),
}
}
}
Expand All @@ -47,6 +56,11 @@ impl SeaOrmConfig {
pub fn extra_model_derives(&self) -> &[String] {
&self.extra_model_derives
}

/// Get the naming case for serde rename_all attribute on generated enums.
pub fn enum_naming_case(&self) -> NameCase {
self.enum_naming_case
}
}

/// Top-level vespertide configuration.
Expand Down
1 change: 1 addition & 0 deletions crates/vespertide-config/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ mod tests {
let cfg = SeaOrmConfig {
extra_enum_derives: vec!["A".to_string(), "B".to_string()],
extra_model_derives: vec!["C".to_string()],
..Default::default()
};
assert_eq!(cfg.extra_enum_derives(), &["A", "B"]);
assert_eq!(cfg.extra_model_derives(), &["C"]);
Expand Down
21 changes: 21 additions & 0 deletions crates/vespertide-config/src/name_case.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,25 @@ impl NameCase {
pub fn is_pascal(self) -> bool {
matches!(self, NameCase::Pascal)
}

/// Returns the serde rename_all attribute value for this case.
pub fn serde_rename_all(self) -> &'static str {
match self {
NameCase::Snake => "snake_case",
NameCase::Camel => "camelCase",
NameCase::Pascal => "PascalCase",
}
}
}

#[cfg(test)]
mod tests {
use super::*;

#[test]
fn test_serde_rename_all() {
assert_eq!(NameCase::Snake.serde_rename_all(), "snake_case");
assert_eq!(NameCase::Camel.serde_rename_all(), "camelCase");
assert_eq!(NameCase::Pascal.serde_rename_all(), "PascalCase");
}
}
8 changes: 8 additions & 0 deletions crates/vespertide-exporter/src/seaorm/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -869,6 +869,10 @@ fn render_enum(
derives.extend(extra_derives);

lines.push(format!("#[derive({})]", derives.join(", ")));
lines.push(format!(
"#[serde(rename_all = \"{}\")]",
config.enum_naming_case().serde_rename_all()
));

match values {
EnumValues::Integer(_) => {
Expand Down Expand Up @@ -2747,6 +2751,7 @@ mod tests {
let config = SeaOrmConfig {
extra_enum_derives: vec!["CustomDerive".to_string()],
extra_model_derives: vec!["ModelDerive".to_string()],
..Default::default()
};
let exporter = SeaOrmExporterWithConfig::new(&config);

Expand Down Expand Up @@ -2778,6 +2783,7 @@ mod tests {
let config = SeaOrmConfig {
extra_enum_derives: vec!["CustomEnumDerive".to_string()],
extra_model_derives: vec![],
..Default::default()
};
let exporter = SeaOrmExporterWithConfig::new(&config);

Expand Down Expand Up @@ -2825,6 +2831,7 @@ mod tests {
let config = SeaOrmConfig {
extra_enum_derives: vec![],
extra_model_derives: vec!["SchemaDerive".to_string()],
..Default::default()
};
let exporter = SeaOrmExporterWithConfig::new(&config);

Expand Down Expand Up @@ -2857,6 +2864,7 @@ mod tests {
let config = SeaOrmConfig {
extra_enum_derives: vec![],
extra_model_derives: vec![],
..Default::default()
};
let exporter = SeaOrmExporterWithConfig::new(&config);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ source: crates/vespertide-exporter/src/seaorm/mod.rs
expression: result
---
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum, Serialize, Deserialize, vespera::Schema)]
#[serde(rename_all = "camelCase")]
#[sea_orm(rs_type = "i32", db_type = "Integer")]
pub enum Color {
Black = 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ source: crates/vespertide-exporter/src/seaorm/mod.rs
expression: result
---
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum, Serialize, Deserialize, vespera::Schema)]
#[serde(rename_all = "camelCase")]
#[sea_orm(rs_type = "i32", db_type = "Integer")]
pub enum TaskStatus {
Pending = 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ source: crates/vespertide-exporter/src/seaorm/mod.rs
expression: result
---
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum, Serialize, Deserialize, vespera::Schema)]
#[serde(rename_all = "camelCase")]
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "tasks_priority")]
pub enum Priority {
#[sea_orm(string_value = "1_high")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ source: crates/vespertide-exporter/src/seaorm/mod.rs
expression: result
---
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum, Serialize, Deserialize, vespera::Schema)]
#[serde(rename_all = "camelCase")]
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "orders_order_status")]
pub enum OrderStatus {
#[sea_orm(string_value = "pending")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum, Serialize, Deserialize, vespera::Schema)]
#[serde(rename_all = "camelCase")]
#[sea_orm(rs_type = "i32", db_type = "Integer")]
pub enum TaskStatus {
Pending = 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum, Serialize, Deserialize, vespera::Schema)]
#[serde(rename_all = "camelCase")]
#[sea_orm(rs_type = "i32", db_type = "Integer")]
pub enum TaskStatus {
Pending = 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum, Serialize, Deserialize, vespera::Schema)]
#[serde(rename_all = "camelCase")]
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "products_product_category")]
pub enum ProductCategory {
#[sea_orm(string_value = "electronics")]
Expand All @@ -17,6 +18,7 @@ pub enum ProductCategory {
}

#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum, Serialize, Deserialize, vespera::Schema)]
#[serde(rename_all = "camelCase")]
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "products_availability_status")]
pub enum AvailabilityStatus {
#[sea_orm(string_value = "in_stock")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum, Serialize, Deserialize, vespera::Schema)]
#[serde(rename_all = "camelCase")]
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "tasks_task_priority")]
pub enum TaskPriority {
#[sea_orm(string_value = "low")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum, Serialize, Deserialize, vespera::Schema)]
#[serde(rename_all = "camelCase")]
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "documents_doc_status")]
pub enum DocStatus {
#[sea_orm(string_value = "draft")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum, Serialize, Deserialize, vespera::Schema)]
#[serde(rename_all = "camelCase")]
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "events_event_severity")]
pub enum EventSeverity {
#[sea_orm(string_value = "info-level")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum, Serialize, Deserialize, vespera::Schema)]
#[serde(rename_all = "camelCase")]
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "orders_order_status")]
pub enum OrderStatus {
#[sea_orm(string_value = "pending")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum, Serialize, Deserialize, vespera::Schema)]
#[serde(rename_all = "camelCase")]
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "tasks_task_status")]
pub enum TaskStatus {
#[sea_orm(string_value = "pending")]
Expand Down