Skip to content

Commit 8720356

Browse files
authored
Merge pull request #24 from dev-five-git/support-enum
Support enum
2 parents 38f12be + 39e13a1 commit 8720356

55 files changed

Lines changed: 4325 additions & 2485 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"changes":{"crates/vespertide-core/Cargo.toml":"Patch","crates/vespertide-config/Cargo.toml":"Patch","crates/vespertide-exporter/Cargo.toml":"Patch","crates/vespertide-cli/Cargo.toml":"Patch","crates/vespertide-planner/Cargo.toml":"Patch","crates/vespertide-loader/Cargo.toml":"Patch","crates/vespertide-query/Cargo.toml":"Patch","crates/vespertide-macro/Cargo.toml":"Patch","crates/vespertide/Cargo.toml":"Patch"},"note":"Support enum","date":"2025-12-17T11:30:23.776147Z"}

Cargo.lock

Lines changed: 14 additions & 56 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/vespertide-cli/src/commands/log.rs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use anyhow::Result;
22
use colored::Colorize;
3-
use vespertide_loader::{load_config, load_models};
3+
use vespertide_loader::load_config;
4+
use vespertide_planner::apply_action;
45
use vespertide_query::{DatabaseBackend, build_plan_queries};
56

67
use crate::utils::load_migrations;
@@ -21,7 +22,10 @@ pub fn cmd_log(backend: DatabaseBackend) -> Result<()> {
2122
plans.len().to_string().bright_yellow().bold()
2223
);
2324
println!();
24-
let current_models = load_models(&config)?;
25+
26+
// Build baseline schema incrementally as we iterate through migrations
27+
let mut baseline_schema = Vec::new();
28+
2529
for plan in &plans {
2630
println!(
2731
"{} {}",
@@ -44,9 +48,15 @@ pub fn cmd_log(backend: DatabaseBackend) -> Result<()> {
4448
plan.actions.len().to_string().bright_yellow()
4549
);
4650

47-
let plan_queries = build_plan_queries(plan, &current_models)
51+
// Use the current baseline schema (from all previous migrations)
52+
let plan_queries = build_plan_queries(plan, &baseline_schema)
4853
.map_err(|e| anyhow::anyhow!("query build error for v{}: {}", plan.version, e))?;
4954

55+
// Update baseline schema incrementally by applying each action
56+
for action in &plan.actions {
57+
let _ = apply_action(&mut baseline_schema, action);
58+
}
59+
5060
for (i, pq) in plan_queries.iter().enumerate() {
5161
println!(
5262
" {}. {}",

crates/vespertide-cli/src/commands/sql.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use anyhow::Result;
22
use colored::Colorize;
3-
use vespertide_planner::plan_next_migration;
3+
use vespertide_planner::{plan_next_migration_with_baseline, schema_from_plans};
44
use vespertide_query::{DatabaseBackend, build_plan_queries};
55

66
use crate::utils::{load_config, load_migrations, load_models};
@@ -10,10 +10,15 @@ pub fn cmd_sql(backend: DatabaseBackend) -> Result<()> {
1010
let current_models = load_models(&config)?;
1111
let applied_plans = load_migrations(&config)?;
1212

13-
let plan = plan_next_migration(&current_models, &applied_plans)
13+
// Reconstruct the baseline schema from applied migrations
14+
let baseline_schema = schema_from_plans(&applied_plans)
15+
.map_err(|e| anyhow::anyhow!("failed to reconstruct schema: {}", e))?;
16+
17+
// Plan next migration using the pre-computed baseline
18+
let plan = plan_next_migration_with_baseline(&current_models, &applied_plans, &baseline_schema)
1419
.map_err(|e| anyhow::anyhow!("planning error: {}", e))?;
1520

16-
emit_sql(&plan, backend, &current_models)
21+
emit_sql(&plan, backend, &baseline_schema)
1722
}
1823

1924
fn emit_sql(

0 commit comments

Comments
 (0)