Skip to content

Commit

Permalink
Use pretty json in .butane files (#175)
Browse files Browse the repository at this point in the history
  • Loading branch information
jayvdb authored Jan 15, 2024
1 parent c92ae21 commit 50d9860
Show file tree
Hide file tree
Showing 7 changed files with 201 additions and 10 deletions.
2 changes: 1 addition & 1 deletion butane_core/src/db/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ impl ConnectionSpec {
pub fn save(&self, path: &Path) -> Result<()> {
let path = conn_complete_if_dir(path);
let mut f = fs::File::create(path)?;
f.write_all(serde_json::to_string(self)?.as_bytes())
f.write_all(serde_json::to_string_pretty(self)?.as_bytes())
.map_err(|e| e.into())
}
/// Load a previously saved connection spec
Expand Down
16 changes: 11 additions & 5 deletions butane_core/src/migrations/fsmigrations.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ impl FsMigration {
}

fn write_info(&self, info: &MigrationInfo) -> Result<()> {
self.write_contents("info.json", serde_json::to_string(info)?.as_bytes())
self.write_contents("info.json", serde_json::to_string_pretty(info)?.as_bytes())
}

fn write_sql(&self, name: &str, sql: &str) -> Result<()> {
Expand All @@ -92,10 +92,16 @@ impl FsMigration {
fn write_contents(&self, fname: &str, contents: &[u8]) -> Result<()> {
self.ensure_dir()?;
let path = self.root.join(fname);
let mut contents: Vec<u8> = contents.into();
if contents[contents.len() - 1] != b'\n' {
contents.push(b'\n');
}
self.fs
.write(&path)?
.write_all(contents)
.map_err(|e| e.into())
.write_all(&contents)
.map_err(<std::io::Error as Into<Error>>::into)?;

Ok(())
}

fn ensure_dir(&self) -> Result<()> {
Expand Down Expand Up @@ -124,7 +130,7 @@ impl MigrationMut for FsMigration {
fn write_table(&mut self, table: &ATable) -> Result<()> {
self.write_contents(
&format!("{}.table", table.name),
serde_json::to_string(table)?.as_bytes(),
serde_json::to_string_pretty(table)?.as_bytes(),
)
}

Expand Down Expand Up @@ -269,7 +275,7 @@ impl FsMigrations {
fn save_state(&mut self, state: &MigrationsState) -> Result<()> {
let path = self.root.join("state.json");
let mut f = self.fs.write(&path)?;
f.write_all(serde_json::to_string(state)?.as_bytes())
f.write_all(serde_json::to_string_pretty(state)?.as_bytes())
.map_err(|e| e.into())
}
/// Detach the latest migration from the list of migrations,
Expand Down
1 change: 1 addition & 0 deletions butane_core/tests/many.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

32 changes: 31 additions & 1 deletion examples/getting_started/.butane/migrations/current/Blog.table
Original file line number Diff line number Diff line change
@@ -1 +1,31 @@
{"name":"Blog","columns":[{"name":"id","sqltype":{"KnownId":{"Ty":"BigInt"}},"nullable":false,"pk":true,"auto":true,"unique":false,"default":null},{"name":"name","sqltype":{"KnownId":{"Ty":"Text"}},"nullable":false,"pk":false,"auto":false,"unique":false,"default":null}]}
{
"name": "Blog",
"columns": [
{
"name": "id",
"sqltype": {
"KnownId": {
"Ty": "BigInt"
}
},
"nullable": false,
"pk": true,
"auto": true,
"unique": false,
"default": null
},
{
"name": "name",
"sqltype": {
"KnownId": {
"Ty": "Text"
}
},
"nullable": false,
"pk": false,
"auto": false,
"unique": false,
"default": null
}
]
}
100 changes: 99 additions & 1 deletion examples/getting_started/.butane/migrations/current/Post.table
Original file line number Diff line number Diff line change
@@ -1 +1,99 @@
{"name":"Post","columns":[{"name":"id","sqltype":{"KnownId":{"Ty":"Int"}},"nullable":false,"pk":true,"auto":true,"unique":false,"default":null},{"name":"title","sqltype":{"KnownId":{"Ty":"Text"}},"nullable":false,"pk":false,"auto":false,"unique":false,"default":null},{"name":"body","sqltype":{"KnownId":{"Ty":"Text"}},"nullable":false,"pk":false,"auto":false,"unique":false,"default":null},{"name":"published","sqltype":{"KnownId":{"Ty":"Bool"}},"nullable":false,"pk":false,"auto":false,"unique":false,"default":null},{"name":"blog","sqltype":{"Deferred":"PK:Blog"},"nullable":false,"pk":false,"auto":false,"unique":false,"default":null,"reference":{"Deferred":{"Deferred":"PK:Blog"}}},{"name":"byline","sqltype":{"KnownId":{"Ty":"Text"}},"nullable":true,"pk":false,"auto":false,"unique":false,"default":null},{"name":"likes","sqltype":{"KnownId":{"Ty":"Int"}},"nullable":false,"pk":false,"auto":false,"unique":false,"default":null}]}
{
"name": "Post",
"columns": [
{
"name": "id",
"sqltype": {
"KnownId": {
"Ty": "Int"
}
},
"nullable": false,
"pk": true,
"auto": true,
"unique": false,
"default": null
},
{
"name": "title",
"sqltype": {
"KnownId": {
"Ty": "Text"
}
},
"nullable": false,
"pk": false,
"auto": false,
"unique": false,
"default": null
},
{
"name": "body",
"sqltype": {
"KnownId": {
"Ty": "Text"
}
},
"nullable": false,
"pk": false,
"auto": false,
"unique": false,
"default": null
},
{
"name": "published",
"sqltype": {
"KnownId": {
"Ty": "Bool"
}
},
"nullable": false,
"pk": false,
"auto": false,
"unique": false,
"default": null
},
{
"name": "blog",
"sqltype": {
"Deferred": "PK:Blog"
},
"nullable": false,
"pk": false,
"auto": false,
"unique": false,
"default": null,
"reference": {
"Deferred": {
"Deferred": "PK:Blog"
}
}
},
{
"name": "byline",
"sqltype": {
"KnownId": {
"Ty": "Text"
}
},
"nullable": true,
"pk": false,
"auto": false,
"unique": false,
"default": null
},
{
"name": "likes",
"sqltype": {
"KnownId": {
"Ty": "Int"
}
},
"nullable": false,
"pk": false,
"auto": false,
"unique": false,
"default": null
}
]
}
Original file line number Diff line number Diff line change
@@ -1 +1,40 @@
{"name":"Post_tags_Many","columns":[{"name":"owner","sqltype":{"KnownId":{"Ty":"Int"}},"nullable":false,"pk":false,"auto":false,"unique":false,"default":null,"reference":{"Literal":{"table_name":"Post","column_name":"id"}}},{"name":"has","sqltype":{"Deferred":"PK:Tag"},"nullable":false,"pk":false,"auto":false,"unique":false,"default":null,"reference":{"Deferred":{"Deferred":"PK:Tag"}}}]}
{
"name": "Post_tags_Many",
"columns": [
{
"name": "owner",
"sqltype": {
"KnownId": {
"Ty": "Int"
}
},
"nullable": false,
"pk": false,
"auto": false,
"unique": false,
"default": null,
"reference": {
"Literal": {
"table_name": "Post",
"column_name": "id"
}
}
},
{
"name": "has",
"sqltype": {
"Deferred": "PK:Tag"
},
"nullable": false,
"pk": false,
"auto": false,
"unique": false,
"default": null,
"reference": {
"Deferred": {
"Deferred": "PK:Tag"
}
}
}
]
}
19 changes: 18 additions & 1 deletion examples/getting_started/.butane/migrations/current/Tag.table
Original file line number Diff line number Diff line change
@@ -1 +1,18 @@
{"name":"Tag","columns":[{"name":"tag","sqltype":{"KnownId":{"Ty":"Text"}},"nullable":false,"pk":true,"auto":false,"unique":false,"default":null}]}
{
"name": "Tag",
"columns": [
{
"name": "tag",
"sqltype": {
"KnownId": {
"Ty": "Text"
}
},
"nullable": false,
"pk": true,
"auto": false,
"unique": false,
"default": null
}
]
}

0 comments on commit 50d9860

Please sign in to comment.