{"push_id":915217617,"size":12,"distinct_size":9,"ref":"refs/heads/sg-migrations","head":"53b389b9bac83c004609ff272a606384f9cbd19e","before":"aa803bcdf661daca50c70bcc2d311aad41647f38","commits":[{"sha":"ff2ea63a63231163885ad8da6d2a83a8c6b64445","author":{"email":"d7e19930cc1f42c2d0781f4d9e6f1fe5891bf9cf@seantheprogrammer.com","name":"Sean Griffin"},"message":"Ensure `Vec<T>` can be used in `#[changeset_for]`\n\nUsually we implement all the various `AsExpression` for refs in the\n`expression_impls!` macro. However, that macro doesn't work with generics,\nand we forgot to handle `Vec<T>` (I think I figured the slice impl was\nenough for some reason).\n\nI tried to write a test for this change, but there are actually several\nother bugs that prevent me from testing this properly. See #65 & #66.\n\nFixes #63.","distinct":false,"url":"https://api.github.com/repos/sgrif/diesel/commits/ff2ea63a63231163885ad8da6d2a83a8c6b64445"},{"sha":"397fcc02913cf9973b5b8b41ddad49e966493e48","author":{"email":"d7e19930cc1f42c2d0781f4d9e6f1fe5891bf9cf@seantheprogrammer.com","name":"Sean Griffin"},"message":"Generate valid SQL syntax when mixing optional and non-optional updates\n\nPrior to this commit, our implementation would *never* insert a comma\nimmediately after skipping a field. This is a problem if there was a\nfield that was updated appearing before it.\n\nFixes #68","distinct":false,"url":"https://api.github.com/repos/sgrif/diesel/commits/397fcc02913cf9973b5b8b41ddad49e966493e48"},{"sha":"79d7cf02bcfb49352d35366d8c829a15979b8f33","author":{"email":"d7e19930cc1f42c2d0781f4d9e6f1fe5891bf9cf@seantheprogrammer.com","name":"Sean Griffin"},"message":"Bump syntex versions\n\nOur transitive deps appeared to be mixing in a weird way that broke the\nbuild.","distinct":false,"url":"https://api.github.com/repos/sgrif/diesel/commits/79d7cf02bcfb49352d35366d8c829a15979b8f33"},{"sha":"3fefcdb15fcc3527fbe4eaa06398c5804309a9fe","author":{"email":"d7e19930cc1f42c2d0781f4d9e6f1fe5891bf9cf@seantheprogrammer.com","name":"Sean Griffin"},"message":"Add `find_migration_directory`\n\nThis is the first (small) piece of migration support, finding the directory\ncontaining migrations. Searches the current directory and its parents until it\nfinds the directory containing Cargo.toml.","distinct":true,"url":"https://api.github.com/repos/sgrif/diesel/commits/3fefcdb15fcc3527fbe4eaa06398c5804309a9fe"},{"sha":"62a59b797d381e0f2f332a18f61c81e86e6428fc","author":{"email":"d7e19930cc1f42c2d0781f4d9e6f1fe5891bf9cf@seantheprogrammer.com","name":"Sean Griffin"},"message":"First pass at useable migrations\n\nThis still has a lot of rough edges, and isn't a fully finished feature,\nbut it's pretty much the smallest step to something that I can test that\npasses.\n\nThis adds the ability to run pending migrations (presumably from a build\nscript). Migrations should be in the directory /migrations, where each\nmigration is a timestamped sub-directory containing the files `up.sql` and\n`down.sql`.\n\nThe migrations will be run, and an internal table will keep track of which\nmigrations have or haven't been run. A lot of this code needs to be\nrefactored.","distinct":true,"url":"https://api.github.com/repos/sgrif/diesel/commits/62a59b797d381e0f2f332a18f61c81e86e6428fc"},{"sha":"27bf3de53045a6bff56fec861e1f974bebdea5a8","author":{"email":"d7e19930cc1f42c2d0781f4d9e6f1fe5891bf9cf@seantheprogrammer.com","name":"Sean Griffin"},"message":"Use bind params for managing __schema_migrations\n\nInterestingly enough, the easiest way to accomplish this is to just use\nour own DSLs. We can't use codegen here, as that would create a circular\ndependency, but we just need to implement `Insertable` by hand.\n\nThere were a few strange quirks that came as a result of this. I had to\nmove `macros` up to the top so it could be used in `migrations`, which\nmeant it could not do `use $crate::*;`. Additionally, we once again run\ninto the bug where we can only use traits in public modules in our own\ncrate.","distinct":true,"url":"https://api.github.com/repos/sgrif/diesel/commits/27bf3de53045a6bff56fec861e1f974bebdea5a8"},{"sha":"9434acf434c1c983d3a74816c4f81f52aa4ba063","author":{"email":"d7e19930cc1f42c2d0781f4d9e6f1fe5891bf9cf@seantheprogrammer.com","name":"Sean Griffin"},"message":"Run migrations inside of a transaction\n\nWe need to be sure that the migration running successfully and the\ninsertion into `__diesel_schema_migrations` are an atomic operation.\n\nI wish I could write the generic `impl<T: From<Error>>\nFrom<TransactionError<T>>`...","distinct":true,"url":"https://api.github.com/repos/sgrif/diesel/commits/9434acf434c1c983d3a74816c4f81f52aa4ba063"},{"sha":"d24f7bea62e637d113dcfbb1e9421f0378100c42","author":{"email":"d7e19930cc1f42c2d0781f4d9e6f1fe5891bf9cf@seantheprogrammer.com","name":"Sean Griffin"},"message":"Move reporting which migration is being run\n\nThis isn't a great place for it either, as we're universally printing to\nSTDOUT, but it's marginally better than where it was before. I'm debating\nwhether or not I should just inject a `Write` to the `Migration`.","distinct":true,"url":"https://api.github.com/repos/sgrif/diesel/commits/d24f7bea62e637d113dcfbb1e9421f0378100c42"},{"sha":"f48beff90ec2a82615fdad784da615da00340008","author":{"email":"d7e19930cc1f42c2d0781f4d9e6f1fe5891bf9cf@seantheprogrammer.com","name":"Sean Griffin"},"message":"Allow migrations to have more meaningful names\n\nWe don't just want to have a bunch of directories with meaningless\ntimestamps, as it becomes difficult to know what to edit/read. This also\nbackfills some missing tests for pieces which can be tested in isolation.","distinct":true,"url":"https://api.github.com/repos/sgrif/diesel/commits/f48beff90ec2a82615fdad784da615da00340008"},{"sha":"ceb56d5fd9597063e0709b48fd5166607dcdd461","author":{"email":"d7e19930cc1f42c2d0781f4d9e6f1fe5891bf9cf@seantheprogrammer.com","name":"Sean Griffin"},"message":"Improve the behavior of `valid_sql_file_migration`\n\nThere were many cases where we would try to run a migration from a\ndirectory that doesn't have the proper structure. This adds tests and\nchanges the behavior to ensure everything is set up properly.\n\nWhat I really want to do is compare all the file names to `[\"up.sql\",\n\"down.sql\"]`, but it seems to be more difficult to do that than what we\nhave now.","distinct":true,"url":"https://api.github.com/repos/sgrif/diesel/commits/ceb56d5fd9597063e0709b48fd5166607dcdd461"},{"sha":"589b33054b520606f5ff5596c8d308d33e53197a","author":{"email":"d7e19930cc1f42c2d0781f4d9e6f1fe5891bf9cf@seantheprogrammer.com","name":"Sean Griffin"},"message":"Change migration version from string to bigint\n\nThis is already an implicit contract, so let's make it explicit through\nour types.","distinct":true,"url":"https://api.github.com/repos/sgrif/diesel/commits/589b33054b520606f5ff5596c8d308d33e53197a"},{"sha":"53b389b9bac83c004609ff272a606384f9cbd19e","author":{"email":"d7e19930cc1f42c2d0781f4d9e6f1fe5891bf9cf@seantheprogrammer.com","name":"Sean Griffin"},"message":"Change migration version back to a string\n\nConcerns were raised about enforcing an integer here, and it seems like\nwe'd prefer the flexibility of strings. While I was on the fence about\nthis, I was recently told a story about someone trying to do millisecond\nprecision on migrations in Rails that were generated by a script. This\nlead to `rake db:rollback` always rolling back the millisecond\nmigration, since it won on integer ordering, even though it didn't win\non string ordering. This sold me on just going with strings, even if it\nallows some strange behaviors.","distinct":true,"url":"https://api.github.com/repos/sgrif/diesel/commits/53b389b9bac83c004609ff272a606384f9cbd19e"}]}