diff --git a/.changepacks/changepack_log_AbTw6598it-Clc46zTOxZ.json b/.changepacks/changepack_log_AbTw6598it-Clc46zTOxZ.json new file mode 100644 index 0000000..4d875a1 --- /dev/null +++ b/.changepacks/changepack_log_AbTw6598it-Clc46zTOxZ.json @@ -0,0 +1 @@ +{"changes":{"crates/vespertide-exporter/Cargo.toml":"Patch","crates/vespertide-macro/Cargo.toml":"Patch","crates/vespertide-loader/Cargo.toml":"Patch","crates/vespertide-config/Cargo.toml":"Patch","crates/vespertide-naming/Cargo.toml":"Patch","crates/vespertide-cli/Cargo.toml":"Patch","crates/vespertide-planner/Cargo.toml":"Patch","crates/vespertide-query/Cargo.toml":"Patch","crates/vespertide/Cargo.toml":"Patch","crates/vespertide-core/Cargo.toml":"Patch"},"note":"Fix export issue when file has vespertide suffix","date":"2026-02-03T12:05:38.014177500Z"} \ No newline at end of file diff --git a/.changepacks/changepack_log_i3CUZ3e24HS2YscftMKQD.json b/.changepacks/changepack_log_i3CUZ3e24HS2YscftMKQD.json new file mode 100644 index 0000000..0f267bb --- /dev/null +++ b/.changepacks/changepack_log_i3CUZ3e24HS2YscftMKQD.json @@ -0,0 +1 @@ +{"changes":{"crates/vespertide-macro/Cargo.toml":"Patch","crates/vespertide-planner/Cargo.toml":"Patch","crates/vespertide-config/Cargo.toml":"Patch","crates/vespertide-query/Cargo.toml":"Patch","crates/vespertide-loader/Cargo.toml":"Patch","crates/vespertide/Cargo.toml":"Patch","crates/vespertide-exporter/Cargo.toml":"Patch","crates/vespertide-cli/Cargo.toml":"Patch","crates/vespertide-core/Cargo.toml":"Patch","crates/vespertide-naming/Cargo.toml":"Patch"},"note":"Fix derive","date":"2026-02-03T11:39:47.686761200Z"} \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 70ea873..c2dc661 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2972,7 +2972,7 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vespertide" -version = "0.1.39" +version = "0.1.40" dependencies = [ "vespertide-core", "vespertide-macro", @@ -2980,7 +2980,7 @@ dependencies = [ [[package]] name = "vespertide-cli" -version = "0.1.39" +version = "0.1.40" dependencies = [ "anyhow", "assert_cmd", @@ -3005,7 +3005,7 @@ dependencies = [ [[package]] name = "vespertide-config" -version = "0.1.39" +version = "0.1.40" dependencies = [ "clap", "schemars", @@ -3015,7 +3015,7 @@ dependencies = [ [[package]] name = "vespertide-core" -version = "0.1.39" +version = "0.1.40" dependencies = [ "rstest", "schemars", @@ -3027,7 +3027,7 @@ dependencies = [ [[package]] name = "vespertide-exporter" -version = "0.1.39" +version = "0.1.40" dependencies = [ "insta", "rstest", @@ -3038,7 +3038,7 @@ dependencies = [ [[package]] name = "vespertide-loader" -version = "0.1.39" +version = "0.1.40" dependencies = [ "anyhow", "rstest", @@ -3053,7 +3053,7 @@ dependencies = [ [[package]] name = "vespertide-macro" -version = "0.1.39" +version = "0.1.40" dependencies = [ "proc-macro2", "quote", @@ -3070,11 +3070,11 @@ dependencies = [ [[package]] name = "vespertide-naming" -version = "0.1.39" +version = "0.1.40" [[package]] name = "vespertide-planner" -version = "0.1.39" +version = "0.1.40" dependencies = [ "insta", "rstest", @@ -3085,7 +3085,7 @@ dependencies = [ [[package]] name = "vespertide-query" -version = "0.1.39" +version = "0.1.40" dependencies = [ "insta", "rstest", diff --git a/crates/vespertide-cli/src/commands/export.rs b/crates/vespertide-cli/src/commands/export.rs index 531cbf5..4a0a0d0 100644 --- a/crates/vespertide-cli/src/commands/export.rs +++ b/crates/vespertide-cli/src/commands/export.rs @@ -111,6 +111,9 @@ fn build_output_path(root: &Path, rel_path: &Path, orm: Orm) -> PathBuf { (file_name, "") }; + // Strip .vespertide suffix if present (e.g., "user.vespertide" -> "user") + let stem = strip_vespertide_suffix(stem); + let sanitized = sanitize_filename(stem); let ext = match orm { Orm::SeaOrm => "rs", @@ -134,6 +137,12 @@ fn sanitize_filename(name: &str) -> String { .collect::() } +/// Strip `.vespertide` suffix from a filename stem. +/// E.g., "user.vespertide" -> "user", "user" -> "user" +fn strip_vespertide_suffix(stem: &str) -> &str { + stem.strip_suffix(".vespertide").unwrap_or(stem) +} + fn load_models_recursive(base: &Path) -> Result> { let mut out = Vec::new(); if !base.exists() { @@ -151,6 +160,7 @@ fn ensure_mod_chain(root: &Path, rel_path: &Path) -> Result<()> { .filter_map(|c| { c.as_os_str() .to_str() + .map(strip_vespertide_suffix) .map(|s| sanitize_filename(s).to_string()) }) .collect(); @@ -489,6 +499,35 @@ mod tests { assert_eq!(out_py, Path::new("src/models/users.py")); } + #[test] + fn build_output_path_strips_vespertide_suffix() { + use std::path::Path; + let root = Path::new("src/models"); + + // user.vespertide.json -> user.rs (not user_vespertide.rs) + let rel_path = Path::new("user.vespertide.json"); + let out = build_output_path(root, rel_path, Orm::SeaOrm); + assert_eq!(out, Path::new("src/models/user.rs")); + + // Nested path + let rel_path2 = Path::new("blog/post.vespertide.yaml"); + let out2 = build_output_path(root, rel_path2, Orm::SeaOrm); + assert_eq!(out2, Path::new("src/models/blog/post.rs")); + + // Python export + let out_py = build_output_path(root, rel_path, Orm::SqlAlchemy); + assert_eq!(out_py, Path::new("src/models/user.py")); + } + + #[rstest] + #[case("user.vespertide", "user")] + #[case("user", "user")] + #[case("user.vespertide.extra", "user.vespertide.extra")] + #[case("", "")] + fn test_strip_vespertide_suffix(#[case] input: &str, #[case] expected: &str) { + assert_eq!(strip_vespertide_suffix(input), expected); + } + #[test] fn build_output_path_handles_special_path_components() { use std::path::Path; diff --git a/crates/vespertide-config/src/config.rs b/crates/vespertide-config/src/config.rs index f3fafaa..2b0e40f 100644 --- a/crates/vespertide-config/src/config.rs +++ b/crates/vespertide-config/src/config.rs @@ -20,28 +20,41 @@ pub struct SeaOrmConfig { #[serde(default = "default_extra_enum_derives")] pub extra_enum_derives: Vec, /// Additional derive macros to add to generated entity model types. - #[serde(default)] + #[serde(default = "default_extra_model_derives")] pub extra_model_derives: Vec, /// 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, + /// Naming case for serde rename_all attribute on generated models. + /// Default: `Camel` (generates `#[serde(rename_all = "camelCase")]`) + #[serde(default = "default_model_naming_case")] + pub model_naming_case: NameCase, } fn default_extra_enum_derives() -> Vec { vec!["vespera::Schema".to_string()] } +fn default_extra_model_derives() -> Vec { + vec!["vespera::Schema".to_string()] +} + fn default_enum_naming_case() -> NameCase { NameCase::Camel } +fn default_model_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(), + extra_model_derives: default_extra_model_derives(), enum_naming_case: default_enum_naming_case(), + model_naming_case: default_model_naming_case(), } } } @@ -61,6 +74,11 @@ impl SeaOrmConfig { pub fn enum_naming_case(&self) -> NameCase { self.enum_naming_case } + + /// Get the naming case for serde rename_all attribute on generated models. + pub fn model_naming_case(&self) -> NameCase { + self.model_naming_case + } } /// Top-level vespertide configuration. @@ -191,7 +209,11 @@ mod tests { config.seaorm.extra_enum_derives, vec!["vespera::Schema".to_string()] ); - assert!(config.seaorm.extra_model_derives.is_empty()); + assert_eq!( + config.seaorm.extra_model_derives, + vec!["vespera::Schema".to_string()] + ); + assert_eq!(config.seaorm.model_naming_case, NameCase::Camel); assert_eq!(config.prefix, ""); } diff --git a/crates/vespertide-config/src/lib.rs b/crates/vespertide-config/src/lib.rs index 1ec2e86..d3fa567 100644 --- a/crates/vespertide-config/src/lib.rs +++ b/crates/vespertide-config/src/lib.rs @@ -41,7 +41,7 @@ mod tests { fn seaorm_config_default_has_vespera_schema() { let cfg = SeaOrmConfig::default(); assert_eq!(cfg.extra_enum_derives(), &["vespera::Schema".to_string()]); - assert!(cfg.extra_model_derives().is_empty()); + assert_eq!(cfg.extra_model_derives(), &["vespera::Schema".to_string()]); } #[test] @@ -70,7 +70,8 @@ mod tests { let json = r#"{}"#; let cfg: SeaOrmConfig = serde_json::from_str(json).unwrap(); assert_eq!(cfg.extra_enum_derives(), &["vespera::Schema".to_string()]); - assert!(cfg.extra_model_derives().is_empty()); + assert_eq!(cfg.extra_model_derives(), &["vespera::Schema".to_string()]); + assert_eq!(cfg.model_naming_case(), NameCase::Camel); } #[test] diff --git a/crates/vespertide-exporter/src/seaorm/mod.rs b/crates/vespertide-exporter/src/seaorm/mod.rs index 08565e4..9627bb8 100644 --- a/crates/vespertide-exporter/src/seaorm/mod.rs +++ b/crates/vespertide-exporter/src/seaorm/mod.rs @@ -128,6 +128,10 @@ pub fn render_entity_with_config( lines.push("#[sea_orm::model]".into()); lines.push(format!("#[derive({})]", model_derives.join(", "))); + lines.push(format!( + "#[serde(rename_all = \"{}\")]", + config.model_naming_case().serde_rename_all() + )); lines.push(format!( "#[sea_orm(table_name = \"{}{}\")]", prefix, table.name diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__integer_enum_default_value_snapshots@1.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__integer_enum_default_value_snapshots@1.snap index 1e99750..a36ca30 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__integer_enum_default_value_snapshots@1.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__integer_enum_default_value_snapshots@1.snap @@ -16,6 +16,7 @@ pub enum TaskStatus { #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "tasks")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__integer_enum_default_value_snapshots@pending_status.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__integer_enum_default_value_snapshots@pending_status.snap index fb10cfe..e485776 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__integer_enum_default_value_snapshots@pending_status.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__integer_enum_default_value_snapshots@pending_status.snap @@ -16,6 +16,7 @@ pub enum TaskStatus { #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "tasks")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_basic_single_pk.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_basic_single_pk.snap index dcff7b6..d34c87c 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_basic_single_pk.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_basic_single_pk.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "users")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_composite_pk.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_composite_pk.snap index 69b9604..6bb34db 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_composite_pk.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_composite_pk.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "accounts")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_multiple_columns.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_multiple_columns.snap index a0bc011..bfee6e2 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_multiple_columns.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_multiple_columns.snap @@ -31,6 +31,7 @@ pub enum AvailabilityStatus { #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "products")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_nullable.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_nullable.snap index 913ee06..85874d3 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_nullable.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_nullable.snap @@ -21,6 +21,7 @@ pub enum TaskPriority { #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "tasks")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_shared.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_shared.snap index a41b333..cd3b0f3 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_shared.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_shared.snap @@ -19,6 +19,7 @@ pub enum DocStatus { #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "documents")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_special_values.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_special_values.snap index cc9c602..0785588 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_special_values.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_special_values.snap @@ -21,6 +21,7 @@ pub enum EventSeverity { #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "events")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_type.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_type.snap index 6f4671b..543a9f7 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_type.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_type.snap @@ -19,6 +19,7 @@ pub enum OrderStatus { #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "orders")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_with_default.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_with_default.snap index 60202c5..014ed61 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_with_default.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_enum_with_default.snap @@ -19,6 +19,7 @@ pub enum TaskStatus { #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "tasks")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_fk_composite.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_fk_composite.snap index 4025811..dc50633 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_fk_composite.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_fk_composite.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "invoices")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_fk_single.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_fk_single.snap index e6e25aa..cd9ed50 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_fk_single.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_fk_single.snap @@ -1,6 +1,5 @@ --- source: crates/vespertide-exporter/src/seaorm/mod.rs -assertion_line: 2004 expression: rendered --- use sea_orm::entity::prelude::*; @@ -8,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "posts")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_inline_pk.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_inline_pk.snap index e4f24e0..46c0ebb 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_inline_pk.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_inline_pk.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "users")] pub struct Model { #[sea_orm(primary_key, default_value = "gen_random_uuid()")] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_jsonb_custom_type.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_jsonb_custom_type.snap index a73958e..7dcb043 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_jsonb_custom_type.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_jsonb_custom_type.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "json_struct")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_pk_and_fk_together.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_pk_and_fk_together.snap index 650a48d..6efd759 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_pk_and_fk_together.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_pk_and_fk_together.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "article_user")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_table_level_pk.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_table_level_pk.snap index 0f2bfe5..e1767e7 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_table_level_pk.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_table_level_pk.snap @@ -1,6 +1,5 @@ --- source: crates/vespertide-exporter/src/seaorm/mod.rs -assertion_line: 2099 expression: rendered --- use sea_orm::entity::prelude::*; @@ -8,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "orders")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_unique_and_indexed.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_unique_and_indexed.snap index 5d36fab..0d93315 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_unique_and_indexed.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_snapshots@params_unique_and_indexed.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "users")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_composite_fk_parent.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_composite_fk_parent.snap index 6a9a7c7..c445b5b 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_composite_fk_parent.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_composite_fk_parent.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "parent")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_many_to_many_article.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_many_to_many_article.snap index c2d49e0..c902d99 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_many_to_many_article.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_many_to_many_article.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "article")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_many_to_many_missing_target.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_many_to_many_missing_target.snap index 9617f45..4c7bd28 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_many_to_many_missing_target.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_many_to_many_missing_target.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "article")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_many_to_many_user.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_many_to_many_user.snap index 8d3bf44..15d950b 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_many_to_many_user.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_many_to_many_user.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "user")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_multiple_fk_same_table.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_multiple_fk_same_table.snap index 3ecca65..adbf0aa 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_multiple_fk_same_table.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_multiple_fk_same_table.snap @@ -1,6 +1,5 @@ --- source: crates/vespertide-exporter/src/seaorm/mod.rs -assertion_line: 2277 expression: rendered --- use sea_orm::entity::prelude::*; @@ -8,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "post")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_multiple_has_one_relations.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_multiple_has_one_relations.snap index b2da6d2..7dfa0a7 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_multiple_has_one_relations.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_multiple_has_one_relations.snap @@ -1,6 +1,5 @@ --- source: crates/vespertide-exporter/src/seaorm/mod.rs -assertion_line: 2406 expression: rendered --- use sea_orm::entity::prelude::*; @@ -8,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "user")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_multiple_reverse_relations.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_multiple_reverse_relations.snap index fa27a43..c8aeb20 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_multiple_reverse_relations.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_multiple_reverse_relations.snap @@ -1,6 +1,5 @@ --- source: crates/vespertide-exporter/src/seaorm/mod.rs -assertion_line: 2367 expression: rendered --- use sea_orm::entity::prelude::*; @@ -8,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "user")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_not_junction_fk_not_in_pk_another.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_not_junction_fk_not_in_pk_another.snap index 7f83e1a..064fb21 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_not_junction_fk_not_in_pk_another.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_not_junction_fk_not_in_pk_another.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "another")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_not_junction_fk_not_in_pk_other.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_not_junction_fk_not_in_pk_other.snap index 1f9ff68..10be841 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_not_junction_fk_not_in_pk_other.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_not_junction_fk_not_in_pk_other.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "other")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_not_junction_single_pk.snap b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_not_junction_single_pk.snap index f120439..6578398 100644 --- a/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_not_junction_single_pk.snap +++ b/crates/vespertide-exporter/src/seaorm/snapshots/vespertide_exporter__seaorm__tests__render_entity_with_schema_snapshots@schema_not_junction_single_pk.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "other")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/snapshots/vespertide_exporter__orm__tests__render_entity_snapshots@seaorm.snap b/crates/vespertide-exporter/src/snapshots/vespertide_exporter__orm__tests__render_entity_snapshots@seaorm.snap index 645e497..bf4e1b4 100644 --- a/crates/vespertide-exporter/src/snapshots/vespertide_exporter__orm__tests__render_entity_snapshots@seaorm.snap +++ b/crates/vespertide-exporter/src/snapshots/vespertide_exporter__orm__tests__render_entity_snapshots@seaorm.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "test")] pub struct Model { #[sea_orm(primary_key)] diff --git a/crates/vespertide-exporter/src/snapshots/vespertide_exporter__orm__tests__render_entity_with_schema_snapshots@seaorm.snap b/crates/vespertide-exporter/src/snapshots/vespertide_exporter__orm__tests__render_entity_with_schema_snapshots@seaorm.snap index 645e497..bf4e1b4 100644 --- a/crates/vespertide-exporter/src/snapshots/vespertide_exporter__orm__tests__render_entity_with_schema_snapshots@seaorm.snap +++ b/crates/vespertide-exporter/src/snapshots/vespertide_exporter__orm__tests__render_entity_with_schema_snapshots@seaorm.snap @@ -7,6 +7,7 @@ use serde::{Deserialize, Serialize}; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] #[sea_orm(table_name = "test")] pub struct Model { #[sea_orm(primary_key)] diff --git a/schemas/config.schema.json b/schemas/config.schema.json index 050b59e..3cb544f 100644 --- a/schemas/config.schema.json +++ b/schemas/config.schema.json @@ -43,7 +43,10 @@ "extraEnumDerives": [ "vespera::Schema" ], - "extraModelDerives": [] + "extraModelDerives": [ + "vespera::Schema" + ], + "modelNamingCase": "camel" } }, "tableNamingCase": { @@ -97,10 +100,17 @@ "extraModelDerives": { "description": "Additional derive macros to add to generated entity model types.", "type": "array", - "default": [], + "default": [ + "vespera::Schema" + ], "items": { "type": "string" } + }, + "modelNamingCase": { + "description": "Naming case for serde rename_all attribute on generated models.\nDefault: `Camel` (generates `#[serde(rename_all = \"camelCase\")]`)", + "$ref": "#/$defs/NameCase", + "default": "camel" } } }