Skip to content

Commit 7296278

Browse files
authored
Merge pull request #22 from dev-five-git/refactor-default-issue
Refactor default issue
2 parents 76da8f1 + ed83474 commit 7296278

312 files changed

Lines changed: 9692 additions & 3335 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-cli/Cargo.toml":"Patch","crates/vespertide-exporter/Cargo.toml":"Patch","crates/vespertide-loader/Cargo.toml":"Patch","crates/vespertide-planner/Cargo.toml":"Patch","crates/vespertide-macro/Cargo.toml":"Patch","crates/vespertide-query/Cargo.toml":"Patch","crates/vespertide-config/Cargo.toml":"Patch","crates/vespertide/Cargo.toml":"Patch"},"note":"Support sqlite migration","date":"2025-12-16T14:09:11.883218100Z"}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"changes":{"crates/vespertide-config/Cargo.toml":"Patch","crates/vespertide-cli/Cargo.toml":"Patch","crates/vespertide-exporter/Cargo.toml":"Patch","crates/vespertide-loader/Cargo.toml":"Patch","crates/vespertide-macro/Cargo.toml":"Patch","crates/vespertide-query/Cargo.toml":"Patch","crates/vespertide/Cargo.toml":"Patch","crates/vespertide-core/Cargo.toml":"Patch","crates/vespertide-planner/Cargo.toml":"Patch"},"note":"Convert default value","date":"2025-12-16T14:08:56.631935300Z"}

Cargo.lock

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

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ documentation = "https://docs.rs/vespertide"
1212
[workspace.dependencies]
1313
vespertide-core = { path = "crates/vespertide-core", version = "0.1.9" }
1414
vespertide-config = { path = "crates/vespertide-config", version = "0.1.9" }
15+
vespertide-loader = { path = "crates/vespertide-loader", version = "0.1.9" }
1516
vespertide-macro = { path = "crates/vespertide-macro", version = "0.1.9" }
1617
vespertide-planner = { path = "crates/vespertide-planner", version = "0.1.9" }
1718
vespertide-query = { path = "crates/vespertide-query", version = "0.1.9" }

crates/vespertide-cli/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ serde_yaml = "0.9"
1919
schemars = "1.1"
2020
vespertide-config = { workspace = true }
2121
vespertide-core = { workspace = true }
22+
vespertide-loader = { workspace = true }
2223
vespertide-planner = { workspace = true }
2324
vespertide-query = { workspace = true }
2425
vespertide-exporter = { workspace = true }

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ mod tests {
184184
use std::path::PathBuf;
185185
use tempfile::tempdir;
186186
use vespertide_config::VespertideConfig;
187-
use vespertide_core::{ColumnDef, ColumnType, SimpleColumnType, TableDef};
187+
use vespertide_core::{ColumnDef, ColumnType, SimpleColumnType, TableConstraint, TableDef};
188188

189189
struct CwdGuard {
190190
original: PathBuf,
@@ -226,7 +226,10 @@ mod tests {
226226
index: None,
227227
foreign_key: None,
228228
}],
229-
constraints: vec![],
229+
constraints: vec![TableConstraint::PrimaryKey {
230+
auto_increment: false,
231+
columns: vec!["id".into()],
232+
}],
230233
indexes: vec![],
231234
};
232235
let path = models_dir.join(format!("{name}.json"));

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

Lines changed: 94 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
use anyhow::Result;
22
use colored::Colorize;
3+
use vespertide_loader::{load_config, load_models};
34
use vespertide_query::{DatabaseBackend, build_plan_queries};
45

56
use crate::utils::load_migrations;
67

7-
pub fn cmd_log() -> Result<()> {
8-
let plans = load_migrations(&crate::utils::load_config()?)?;
8+
pub fn cmd_log(backend: DatabaseBackend) -> Result<()> {
9+
let config = load_config()?;
10+
let plans = load_migrations(&config)?;
911

1012
if plans.is_empty() {
1113
println!("{}", "No migrations found.".bright_yellow());
@@ -19,7 +21,7 @@ pub fn cmd_log() -> Result<()> {
1921
plans.len().to_string().bright_yellow().bold()
2022
);
2123
println!();
22-
24+
let current_models = load_models(&config)?;
2325
for plan in &plans {
2426
println!(
2527
"{} {}",
@@ -42,22 +44,42 @@ pub fn cmd_log() -> Result<()> {
4244
plan.actions.len().to_string().bright_yellow()
4345
);
4446

45-
let queries = build_plan_queries(plan)
47+
let plan_queries = build_plan_queries(plan, &current_models)
4648
.map_err(|e| anyhow::anyhow!("query build error for v{}: {}", plan.version, e))?;
47-
println!(
48-
" {} {}",
49-
"SQL statements:".bright_cyan().bold(),
50-
queries.len().to_string().bright_yellow().bold()
51-
);
5249

53-
for (i, q) in queries.iter().enumerate() {
50+
for (i, pq) in plan_queries.iter().enumerate() {
5451
println!(
5552
" {}. {}",
5653
(i + 1).to_string().bright_magenta().bold(),
57-
q.build(DatabaseBackend::Postgres).trim().bright_white()
54+
match backend {
55+
DatabaseBackend::Postgres => pq
56+
.postgres
57+
.iter()
58+
.map(|q| q.build(DatabaseBackend::Postgres))
59+
.collect::<Vec<_>>()
60+
.join(";\n")
61+
.trim()
62+
.bright_white(),
63+
DatabaseBackend::MySql => pq
64+
.mysql
65+
.iter()
66+
.map(|q| q.build(DatabaseBackend::MySql))
67+
.collect::<Vec<_>>()
68+
.join(";\n")
69+
.trim()
70+
.bright_white(),
71+
DatabaseBackend::Sqlite => pq
72+
.sqlite
73+
.iter()
74+
.map(|q| q.build(DatabaseBackend::Sqlite))
75+
.collect::<Vec<_>>()
76+
.join(";\n")
77+
.trim()
78+
.bright_white(),
79+
}
5880
);
59-
println!(" {} {:?}", "binds:".bright_cyan(), q.binds());
6081
}
82+
6183
println!();
6284
}
6385

@@ -113,29 +135,85 @@ mod tests {
113135

114136
#[test]
115137
#[serial_test::serial]
116-
fn cmd_log_with_single_migration() {
138+
fn cmd_log_with_single_migration_postgres() {
117139
let tmp = tempdir().unwrap();
118140
let _guard = CwdGuard::new(&tmp.path().to_path_buf());
119141

120142
let cfg = VespertideConfig::default();
121143
write_config(&cfg);
122144
write_migration(&cfg);
123145

124-
let result = cmd_log();
146+
let result = cmd_log(DatabaseBackend::Postgres);
147+
assert!(result.is_ok());
148+
}
149+
150+
#[test]
151+
#[serial_test::serial]
152+
fn cmd_log_with_single_migration_mysql() {
153+
let tmp = tempdir().unwrap();
154+
let _guard = CwdGuard::new(&tmp.path().to_path_buf());
155+
156+
let cfg = VespertideConfig::default();
157+
write_config(&cfg);
158+
write_migration(&cfg);
159+
160+
let result = cmd_log(DatabaseBackend::MySql);
161+
assert!(result.is_ok());
162+
}
163+
164+
#[test]
165+
#[serial_test::serial]
166+
fn cmd_log_with_single_migration_sqlite() {
167+
let tmp = tempdir().unwrap();
168+
let _guard = CwdGuard::new(&tmp.path().to_path_buf());
169+
170+
let cfg = VespertideConfig::default();
171+
write_config(&cfg);
172+
write_migration(&cfg);
173+
174+
let result = cmd_log(DatabaseBackend::Sqlite);
175+
assert!(result.is_ok());
176+
}
177+
178+
#[test]
179+
#[serial_test::serial]
180+
fn cmd_log_no_migrations_postgres() {
181+
let tmp = tempdir().unwrap();
182+
let _guard = CwdGuard::new(&tmp.path().to_path_buf());
183+
184+
let cfg = VespertideConfig::default();
185+
write_config(&cfg);
186+
fs::create_dir_all(cfg.migrations_dir()).unwrap();
187+
188+
let result = cmd_log(DatabaseBackend::Postgres);
189+
assert!(result.is_ok());
190+
}
191+
192+
#[test]
193+
#[serial_test::serial]
194+
fn cmd_log_no_migrations_mysql() {
195+
let tmp = tempdir().unwrap();
196+
let _guard = CwdGuard::new(&tmp.path().to_path_buf());
197+
198+
let cfg = VespertideConfig::default();
199+
write_config(&cfg);
200+
fs::create_dir_all(cfg.migrations_dir()).unwrap();
201+
202+
let result = cmd_log(DatabaseBackend::MySql);
125203
assert!(result.is_ok());
126204
}
127205

128206
#[test]
129207
#[serial_test::serial]
130-
fn cmd_log_no_migrations() {
208+
fn cmd_log_no_migrations_sqlite() {
131209
let tmp = tempdir().unwrap();
132210
let _guard = CwdGuard::new(&tmp.path().to_path_buf());
133211

134212
let cfg = VespertideConfig::default();
135213
write_config(&cfg);
136214
fs::create_dir_all(cfg.migrations_dir()).unwrap();
137215

138-
let result = cmd_log();
216+
let result = cmd_log(DatabaseBackend::Sqlite);
139217
assert!(result.is_ok());
140218
}
141219
}

0 commit comments

Comments
 (0)