{"repo":"weavejester/ragtime","free":true,"listed":false,"github":"https://github.com/weavejester/ragtime","clone":"git clone https://github.com/weavejester/ragtime.git","description":"Database-independent migration library","language":"Clojure","stars":641,"topics":["clojure","database","migrations","sql","jdbc"],"license":"EPL-1.0","category":"databases-storage","readme_excerpt":"Ragtime Ragtime is a Clojure library for migrating structured data in a way that's database independent. It defines a common interface for expressing migrations, much like [Ring][] defines a common interface for expressing web applications. [ring]: https://github.com/ring-clojure/ring Installation Add the following dependency to your deps.edn file: dev.weavejester/ragtime {:mvn/version \"0.12.1\"} Or to your Leiningen project file: [dev.weavejester/ragtime \"0.12.1\"] Overview Ragtime needs a minimum of three things to work: 1. A migratable data store 2. An ordered sequence of migrations 3. A strategy on how to deal with conflicts A data store is an implementation of the DataStore protocol, and tells Ragtime how to record which migrations are applied to an arbitrary store of data, such as a database. It has three methods: add-migration-id - add a new migration ID to the store remove-migration-id - remove a migration ID from the store applied-migration-ids - return an ordered list of applied IDS Migrations are implementations of the Migration protocol, which also has three methods: id - returns a unique ID for the migration run-up! - applies the migration to a database run-down! - rolls back the migration in a database Ragtime comes with implementations of these protocols for Cloure's [java.jdbc][] library and Sean Corfield's [next.jdbc][] library, therefore supporting SQL migrations out of the box. The migration store for SQL database is a special migrations table, and the migrat","default_branch":null,"files":null,"tree":[],"storefront":"/r/weavejester","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/weavejester/ragtime/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}