diff --git a/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/Blog.table b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/Blog.table new file mode 100644 index 00000000..6dbe6909 --- /dev/null +++ b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/Blog.table @@ -0,0 +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 + } + ] +} diff --git a/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/Post.table b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/Post.table new file mode 100644 index 00000000..c6be4646 --- /dev/null +++ b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/Post.table @@ -0,0 +1,102 @@ +{ + "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": { + "KnownId": { + "Ty": "BigInt" + } + }, + "nullable": false, + "pk": false, + "auto": false, + "unique": false, + "default": null, + "reference": { + "Literal": { + "table_name": "Blog", + "column_name": "id" + } + } + }, + { + "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 + } + ] +} diff --git a/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/Post_tags_Many.table b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/Post_tags_Many.table new file mode 100644 index 00000000..d2a855fe --- /dev/null +++ b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/Post_tags_Many.table @@ -0,0 +1,43 @@ +{ + "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": { + "KnownId": { + "Ty": "Text" + } + }, + "nullable": false, + "pk": false, + "auto": false, + "unique": false, + "default": null, + "reference": { + "Literal": { + "table_name": "Tag", + "column_name": "tag" + } + } + } + ] +} diff --git a/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/Tag.table b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/Tag.table new file mode 100644 index 00000000..784abd8b --- /dev/null +++ b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/Tag.table @@ -0,0 +1,18 @@ +{ + "name": "Tag", + "columns": [ + { + "name": "tag", + "sqltype": { + "KnownId": { + "Ty": "Text" + } + }, + "nullable": false, + "pk": true, + "auto": false, + "unique": false, + "default": null + } + ] +} diff --git a/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/info.json b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/info.json new file mode 100644 index 00000000..9afc4efd --- /dev/null +++ b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/info.json @@ -0,0 +1,6 @@ +{ + "from_name": "20201229_171630604_likes", + "backends": [ + "sqlite" + ] +} diff --git a/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/lock b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/lock new file mode 100644 index 00000000..e69de29b diff --git a/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/sqlite_down.sql b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/sqlite_down.sql new file mode 100644 index 00000000..5b5194f1 --- /dev/null +++ b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/sqlite_down.sql @@ -0,0 +1,119 @@ +CREATE TABLE Blog__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +"name" TEXT NOT NULL +); +INSERT INTO Blog__butane_tmp SELECT id, "name" FROM Blog; +DROP TABLE Blog; +ALTER TABLE Blog__butane_tmp RENAME TO Blog; +CREATE TABLE Blog__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +"name" TEXT NOT NULL +); +INSERT INTO Blog__butane_tmp SELECT id, "name" FROM Blog; +DROP TABLE Blog; +ALTER TABLE Blog__butane_tmp RENAME TO Blog; +CREATE TABLE Post__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +title TEXT NOT NULL, +body TEXT NOT NULL, +published INTEGER NOT NULL, +blog INTEGER NOT NULL, +byline TEXT , +likes INTEGER NOT NULL +); +INSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post; +DROP TABLE Post; +ALTER TABLE Post__butane_tmp RENAME TO Post; +CREATE TABLE Post__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +title TEXT NOT NULL, +body TEXT NOT NULL, +published INTEGER NOT NULL, +blog INTEGER NOT NULL, +byline TEXT , +likes INTEGER NOT NULL +); +INSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post; +DROP TABLE Post; +ALTER TABLE Post__butane_tmp RENAME TO Post; +CREATE TABLE Post__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +title TEXT NOT NULL, +body TEXT NOT NULL, +published INTEGER NOT NULL, +blog INTEGER NOT NULL, +byline TEXT , +likes INTEGER NOT NULL +); +INSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post; +DROP TABLE Post; +ALTER TABLE Post__butane_tmp RENAME TO Post; +CREATE TABLE Post__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +title TEXT NOT NULL, +body TEXT NOT NULL, +published INTEGER NOT NULL, +blog INTEGER NOT NULL, +byline TEXT , +likes INTEGER NOT NULL +); +INSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post; +DROP TABLE Post; +ALTER TABLE Post__butane_tmp RENAME TO Post; +CREATE TABLE Post__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +title TEXT NOT NULL, +body TEXT NOT NULL, +published INTEGER NOT NULL, +blog INTEGER NOT NULL, +byline TEXT , +likes INTEGER NOT NULL +); +INSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post; +DROP TABLE Post; +ALTER TABLE Post__butane_tmp RENAME TO Post; +CREATE TABLE Post__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +title TEXT NOT NULL, +body TEXT NOT NULL, +published INTEGER NOT NULL, +blog INTEGER NOT NULL, +byline TEXT , +likes INTEGER NOT NULL +); +INSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post; +DROP TABLE Post; +ALTER TABLE Post__butane_tmp RENAME TO Post; +CREATE TABLE Post__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +title TEXT NOT NULL, +body TEXT NOT NULL, +published INTEGER NOT NULL, +blog INTEGER NOT NULL, +byline TEXT , +likes INTEGER NOT NULL +); +INSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post; +DROP TABLE Post; +ALTER TABLE Post__butane_tmp RENAME TO Post; +CREATE TABLE Post_tags_Many__butane_tmp ( +owner INTEGER NOT NULL, +has TEXT NOT NULL, +FOREIGN KEY (owner) REFERENCES Post(id) +); +INSERT INTO Post_tags_Many__butane_tmp SELECT owner, has FROM Post_tags_Many; +DROP TABLE Post_tags_Many; +ALTER TABLE Post_tags_Many__butane_tmp RENAME TO Post_tags_Many; +CREATE TABLE Post_tags_Many__butane_tmp ( +owner INTEGER NOT NULL, +has TEXT NOT NULL +); +INSERT INTO Post_tags_Many__butane_tmp SELECT owner, has FROM Post_tags_Many; +DROP TABLE Post_tags_Many; +ALTER TABLE Post_tags_Many__butane_tmp RENAME TO Post_tags_Many; +CREATE TABLE Tag__butane_tmp ( +tag TEXT NOT NULL PRIMARY KEY +); +INSERT INTO Tag__butane_tmp SELECT tag FROM Tag; +DROP TABLE Tag; +ALTER TABLE Tag__butane_tmp RENAME TO Tag; diff --git a/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/sqlite_up.sql b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/sqlite_up.sql new file mode 100644 index 00000000..0d92a870 --- /dev/null +++ b/examples/getting_started/.butane/migrations/20240115_023841384_dbconstraints/sqlite_up.sql @@ -0,0 +1,128 @@ +CREATE TABLE Blog__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +"name" TEXT NOT NULL +); +INSERT INTO Blog__butane_tmp SELECT id, "name" FROM Blog; +DROP TABLE Blog; +ALTER TABLE Blog__butane_tmp RENAME TO Blog; +CREATE TABLE Blog__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +"name" TEXT NOT NULL +); +INSERT INTO Blog__butane_tmp SELECT id, "name" FROM Blog; +DROP TABLE Blog; +ALTER TABLE Blog__butane_tmp RENAME TO Blog; +CREATE TABLE Post__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +title TEXT NOT NULL, +body TEXT NOT NULL, +published INTEGER NOT NULL, +blog INTEGER NOT NULL, +byline TEXT , +likes INTEGER NOT NULL, +FOREIGN KEY (blog) REFERENCES Blog(id) +); +INSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post; +DROP TABLE Post; +ALTER TABLE Post__butane_tmp RENAME TO Post; +CREATE TABLE Post__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +title TEXT NOT NULL, +body TEXT NOT NULL, +published INTEGER NOT NULL, +blog INTEGER NOT NULL, +byline TEXT , +likes INTEGER NOT NULL, +FOREIGN KEY (blog) REFERENCES Blog(id) +); +INSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post; +DROP TABLE Post; +ALTER TABLE Post__butane_tmp RENAME TO Post; +CREATE TABLE Post__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +title TEXT NOT NULL, +body TEXT NOT NULL, +published INTEGER NOT NULL, +blog INTEGER NOT NULL, +byline TEXT , +likes INTEGER NOT NULL, +FOREIGN KEY (blog) REFERENCES Blog(id) +); +INSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post; +DROP TABLE Post; +ALTER TABLE Post__butane_tmp RENAME TO Post; +CREATE TABLE Post__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +title TEXT NOT NULL, +body TEXT NOT NULL, +published INTEGER NOT NULL, +blog INTEGER NOT NULL, +byline TEXT , +likes INTEGER NOT NULL, +FOREIGN KEY (blog) REFERENCES Blog(id) +); +INSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post; +DROP TABLE Post; +ALTER TABLE Post__butane_tmp RENAME TO Post; +CREATE TABLE Post__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +title TEXT NOT NULL, +body TEXT NOT NULL, +published INTEGER NOT NULL, +blog INTEGER NOT NULL, +byline TEXT , +likes INTEGER NOT NULL, +FOREIGN KEY (blog) REFERENCES Blog(id) +); +INSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post; +DROP TABLE Post; +ALTER TABLE Post__butane_tmp RENAME TO Post; +CREATE TABLE Post__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +title TEXT NOT NULL, +body TEXT NOT NULL, +published INTEGER NOT NULL, +blog INTEGER NOT NULL, +byline TEXT , +likes INTEGER NOT NULL, +FOREIGN KEY (blog) REFERENCES Blog(id) +); +INSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post; +DROP TABLE Post; +ALTER TABLE Post__butane_tmp RENAME TO Post; +CREATE TABLE Post__butane_tmp ( +id INTEGER NOT NULL PRIMARY KEY, +title TEXT NOT NULL, +body TEXT NOT NULL, +published INTEGER NOT NULL, +blog INTEGER NOT NULL, +byline TEXT , +likes INTEGER NOT NULL, +FOREIGN KEY (blog) REFERENCES Blog(id) +); +INSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post; +DROP TABLE Post; +ALTER TABLE Post__butane_tmp RENAME TO Post; +CREATE TABLE Post_tags_Many__butane_tmp ( +owner INTEGER NOT NULL, +has TEXT NOT NULL, +FOREIGN KEY (has) REFERENCES Tag(tag) +); +INSERT INTO Post_tags_Many__butane_tmp SELECT owner, has FROM Post_tags_Many; +DROP TABLE Post_tags_Many; +ALTER TABLE Post_tags_Many__butane_tmp RENAME TO Post_tags_Many; +CREATE TABLE Post_tags_Many__butane_tmp ( +owner INTEGER NOT NULL, +has TEXT NOT NULL, +FOREIGN KEY (owner) REFERENCES Post(id) +FOREIGN KEY (has) REFERENCES Tag(tag) +); +INSERT INTO Post_tags_Many__butane_tmp SELECT owner, has FROM Post_tags_Many; +DROP TABLE Post_tags_Many; +ALTER TABLE Post_tags_Many__butane_tmp RENAME TO Post_tags_Many; +CREATE TABLE Tag__butane_tmp ( +tag TEXT NOT NULL PRIMARY KEY +); +INSERT INTO Tag__butane_tmp SELECT tag FROM Tag; +DROP TABLE Tag; +ALTER TABLE Tag__butane_tmp RENAME TO Tag; diff --git a/examples/getting_started/.butane/migrations/state.json b/examples/getting_started/.butane/migrations/state.json index 9246bcd4..d6b7c5b7 100644 --- a/examples/getting_started/.butane/migrations/state.json +++ b/examples/getting_started/.butane/migrations/state.json @@ -1 +1,3 @@ -{"latest":"20201229_171630604_likes"} \ No newline at end of file +{ + "latest": "20240115_023841384_dbconstraints" +} \ No newline at end of file diff --git a/examples/getting_started/src/butane_migrations.rs b/examples/getting_started/src/butane_migrations.rs index 95474232..c375a2c6 100644 --- a/examples/getting_started/src/butane_migrations.rs +++ b/examples/getting_started/src/butane_migrations.rs @@ -329,6 +329,215 @@ pub fn get_migrations() -> Result { "down": { "sqlite": "CREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT \n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;" } + }, + "20240115_023841384_dbconstraints": { + "name": "20240115_023841384_dbconstraints", + "db": { + "tables": { + "Blog": { + "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 + } + ] + }, + "Post": { + "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": { + "KnownId": { + "Ty": "BigInt" + } + }, + "nullable": false, + "pk": false, + "auto": false, + "unique": false, + "default": null, + "reference": { + "Literal": { + "table_name": "Blog", + "column_name": "id" + } + } + }, + { + "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 + } + ] + }, + "Post_tags_Many": { + "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": { + "KnownId": { + "Ty": "Text" + } + }, + "nullable": false, + "pk": false, + "auto": false, + "unique": false, + "default": null, + "reference": { + "Literal": { + "table_name": "Tag", + "column_name": "tag" + } + } + } + ] + }, + "Tag": { + "name": "Tag", + "columns": [ + { + "name": "tag", + "sqltype": { + "KnownId": { + "Ty": "Text" + } + }, + "nullable": false, + "pk": true, + "auto": false, + "unique": false, + "default": null + } + ] + } + }, + "extra_types": {} + }, + "from": "20201229_171630604_likes", + "up": { + "sqlite": "CREATE TABLE Blog__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\n\"name\" TEXT NOT NULL\n);\nINSERT INTO Blog__butane_tmp SELECT id, \"name\" FROM Blog;\nDROP TABLE Blog;\nALTER TABLE Blog__butane_tmp RENAME TO Blog;\nCREATE TABLE Blog__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\n\"name\" TEXT NOT NULL\n);\nINSERT INTO Blog__butane_tmp SELECT id, \"name\" FROM Blog;\nDROP TABLE Blog;\nALTER TABLE Blog__butane_tmp RENAME TO Blog;\nCREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT ,\nlikes INTEGER NOT NULL,\nFOREIGN KEY (blog) REFERENCES Blog(id)\n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;\nCREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT ,\nlikes INTEGER NOT NULL,\nFOREIGN KEY (blog) REFERENCES Blog(id)\n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;\nCREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT ,\nlikes INTEGER NOT NULL,\nFOREIGN KEY (blog) REFERENCES Blog(id)\n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;\nCREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT ,\nlikes INTEGER NOT NULL,\nFOREIGN KEY (blog) REFERENCES Blog(id)\n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;\nCREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT ,\nlikes INTEGER NOT NULL,\nFOREIGN KEY (blog) REFERENCES Blog(id)\n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;\nCREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT ,\nlikes INTEGER NOT NULL,\nFOREIGN KEY (blog) REFERENCES Blog(id)\n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;\nCREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT ,\nlikes INTEGER NOT NULL,\nFOREIGN KEY (blog) REFERENCES Blog(id)\n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;\nCREATE TABLE Post_tags_Many__butane_tmp (\nowner INTEGER NOT NULL,\nhas TEXT NOT NULL,\nFOREIGN KEY (has) REFERENCES Tag(tag)\n);\nINSERT INTO Post_tags_Many__butane_tmp SELECT owner, has FROM Post_tags_Many;\nDROP TABLE Post_tags_Many;\nALTER TABLE Post_tags_Many__butane_tmp RENAME TO Post_tags_Many;\nCREATE TABLE Post_tags_Many__butane_tmp (\nowner INTEGER NOT NULL,\nhas TEXT NOT NULL,\nFOREIGN KEY (owner) REFERENCES Post(id)\nFOREIGN KEY (has) REFERENCES Tag(tag)\n);\nINSERT INTO Post_tags_Many__butane_tmp SELECT owner, has FROM Post_tags_Many;\nDROP TABLE Post_tags_Many;\nALTER TABLE Post_tags_Many__butane_tmp RENAME TO Post_tags_Many;\nCREATE TABLE Tag__butane_tmp (\ntag TEXT NOT NULL PRIMARY KEY\n);\nINSERT INTO Tag__butane_tmp SELECT tag FROM Tag;\nDROP TABLE Tag;\nALTER TABLE Tag__butane_tmp RENAME TO Tag;\n" + }, + "down": { + "sqlite": "CREATE TABLE Blog__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\n\"name\" TEXT NOT NULL\n);\nINSERT INTO Blog__butane_tmp SELECT id, \"name\" FROM Blog;\nDROP TABLE Blog;\nALTER TABLE Blog__butane_tmp RENAME TO Blog;\nCREATE TABLE Blog__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\n\"name\" TEXT NOT NULL\n);\nINSERT INTO Blog__butane_tmp SELECT id, \"name\" FROM Blog;\nDROP TABLE Blog;\nALTER TABLE Blog__butane_tmp RENAME TO Blog;\nCREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT ,\nlikes INTEGER NOT NULL\n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;\nCREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT ,\nlikes INTEGER NOT NULL\n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;\nCREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT ,\nlikes INTEGER NOT NULL\n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;\nCREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT ,\nlikes INTEGER NOT NULL\n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;\nCREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT ,\nlikes INTEGER NOT NULL\n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;\nCREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT ,\nlikes INTEGER NOT NULL\n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;\nCREATE TABLE Post__butane_tmp (\nid INTEGER NOT NULL PRIMARY KEY,\ntitle TEXT NOT NULL,\nbody TEXT NOT NULL,\npublished INTEGER NOT NULL,\nblog INTEGER NOT NULL,\nbyline TEXT ,\nlikes INTEGER NOT NULL\n);\nINSERT INTO Post__butane_tmp SELECT id, title, body, published, blog, byline, likes FROM Post;\nDROP TABLE Post;\nALTER TABLE Post__butane_tmp RENAME TO Post;\nCREATE TABLE Post_tags_Many__butane_tmp (\nowner INTEGER NOT NULL,\nhas TEXT NOT NULL,\nFOREIGN KEY (owner) REFERENCES Post(id)\n);\nINSERT INTO Post_tags_Many__butane_tmp SELECT owner, has FROM Post_tags_Many;\nDROP TABLE Post_tags_Many;\nALTER TABLE Post_tags_Many__butane_tmp RENAME TO Post_tags_Many;\nCREATE TABLE Post_tags_Many__butane_tmp (\nowner INTEGER NOT NULL,\nhas TEXT NOT NULL\n);\nINSERT INTO Post_tags_Many__butane_tmp SELECT owner, has FROM Post_tags_Many;\nDROP TABLE Post_tags_Many;\nALTER TABLE Post_tags_Many__butane_tmp RENAME TO Post_tags_Many;\nCREATE TABLE Tag__butane_tmp (\ntag TEXT NOT NULL PRIMARY KEY\n);\nINSERT INTO Tag__butane_tmp SELECT tag FROM Tag;\nDROP TABLE Tag;\nALTER TABLE Tag__butane_tmp RENAME TO Tag;\n" + } } }, "current": { @@ -341,7 +550,7 @@ pub fn get_migrations() -> Result { "up": {}, "down": {} }, - "latest": "20201229_171630604_likes" + "latest": "20240115_023841384_dbconstraints" }"#; MemMigrations::from_json(json) }