UNPKG

cassandra-migration

Version:
111 lines (83 loc) 2.94 kB
> :warning: **Looking for a new maintainer**: Let me know if you are prior contributor or maintainer who is interested in taking over. Cassandra Migration =========== Migrates the schema of Cassandra based on the definition contained within CQL files matching the specified naming convention in the specified directory. Installation ============ ```bash npm install --save cassandra-migration ``` Execution ========= By default the script will look for a file named migrate.json Run the script ```bash cassandra-migration migrate.json ``` Config File =========== The configuration file contains general options at the top level and the cassandra connection configuration. The `cassandra` section should comply with the configuration supported by the cassandra-driver module. All other sections provide directives to the tool itself. The keyspace is required, and must be created outside of the migrations. The `schema_version` table will be created within this keyspace. Example config: ```json { "migrationsDir": "cassandra/schema/migrations", "quiet": false, "cassandra": { "contactPoints": [ "cass0", "cass1" ], "datacenterName": "datacenter1", "localDataCenter": "datacenter1", "useSingleNode": false, "keyspace": "data", "protocolOptions": { "port": 9042 }, "socketOptions": { "connectTimeout": 15000 } }, "auth": { "username": "foo", "password": "bar" } } ``` * The `auth` section of the config is optional. * Also the `datacenterName` is optional but needed when `useSingleNode` is set to true. If it is configured, the Cassandra client will use [WhiteListPolicy](https://docs.datastax.com/en/developer/nodejs-driver/3.3/api/module.policies/module.loadBalancing/class.WhiteListPolicy/) and tries to connect only via the first node of `contactPoints` that you configured. This follows the recommendations of DataStax to only migrate one node at a time and let the cluster replicate the schema updates itself. Otherwise, there is a chance that the cluster breaks. Migration Files =============== The migration files should all be reside at the root level of the directory specified by `migrationDir` in the config file. Each configuration file should follow the format `<VERSION>__<TITLE>.cql` Each query statement within the file should be separated by three hyphens: `---` Example: ``` CREATE TABLE my_keyspace.my_first_table ( id int PRIMARY KEY, name text, record_timestamp timestamp ); --- CREATE TABLE my_keyspace.my_second_table ( id int PRIMARY KEY, description text, record_timestamp timestamp ); ``` Development =========== ## Build a release npm run build ## How to release a new version 1. commit all your changes 2. execute `npm run release`. The command will automatically do a version bump. ``` npm run release Versioning package... Pushing new release tag to GitHub... Creating a new GitHub release... ```