liquigen
Comparing with ruby, java sucks.
It is a simple tool for java liquibase script generation.
Only support mysql db. And it is not a perfect tool, can help to create basic content with simple name. Please change the generated content manually if the generation was wrong.
how to use
-
gem install liquigen
-
Use the liquigen script. For help, type
liquigen help
create_table
liquigen add_table -t table_name prop1:type prop2:type
# Example
liquigen add_table -t user id:integer name:string email:string created_time:datetime updated_time:datetime
The result file:
databaseChangeLog:
- changeSet:
id: '20181103214403'
name: jeremy
changes:
- createTable:
tableName: users
columns:
- column:
name: id
type: bigint
constraints:
primaryKey: true
autoIncrement: true
- column:
name: name
type: varchar(255)
constraints:
nullable: false
rename_table
liquigen rename_table users:s_users customers:s_customers
Result file:
databaseChangeLog:
- changeSet:
id: 20181121150900_RenameTableUsersAndCustomer
author: Jeremy
changes:
- renameTable:
oldTableName: users
newTableName: s_users
- renameTable:
oldTableName: customers
newTableName: s_customers
drop_table
liquigen drop_table user customer
add_column
liquigen add_column -t users name:string email:string
Result:
databaseChangeLog:
- changeSet:
id: 20181121155512_AddColumn_User_NameAndEmail
author: Jeremy Cui
changes:
- addColumn:
tableName: users
columns:
- column:
name: name
type: varchar(255)
constraints:
nullable: false
- column:
name: email
type: varchar(255)
constraints:
nullable: false
rename_column
liquigen rename_column user:status:status_ok:string customer:status:status_ok:string
Result:
databaseChangeLog:
- changeSet:
id: 20181121162306_RenameColumn_UserStatusToStatusOkAndCustomerStatusToStatusOk
author: Jeremy Cui
changes:
- renameColumn:
tableName: users
oldColumnName: status
newColumnName: status_ok
columnDataType: varchar(255)
- renameColumn:
tableName: customers
oldColumnName: status
newColumnName: status_ok
columnDataType: varchar(255)
change_type
liquigen change_type user:id:integer customer:name:string
Result:
databaseChangeLog:
- changeSet:
id: '20181121145051'
author: Jeremy
changes:
- modifyDataType:
tableName: users
columnName: id
newDateType: bigint
- modifyDataType:
tableName: customers
columnName: name
newDateType: varchar(255)
create_index
liquigen add_index -t user name:string email:string
sql
liquigen sql update permission data
This will generate one file called 'datexxxx_Sql_UpdatePermissionData.ymal'
config
Which is used for scaffolding java codes. In your application directory, one file called '.liquigen' will be added.
liquigen config
Please specify your custom name and path:
- package_name=com.yourpackage
- java_codes_root=src/main/java
- migration_path=src/main/resources/db/migrations
- controller_package_name=
- entity_package_name=
- repository_package_name=
- repository_suffix= # If you want UserRepository, set Repository here.
scaffold
liquigen scaffold -n table id:integer name:string email:string
# Get help by typing liquigen scaffold --help
How to let the liquibase use migration directory
- In your java project, open application.yml, add the following lines:
spring:
liquibase:
change-log: classpath:/db/changelog-master.yaml
relativeToChangelogFile: true
- Edit your changelog-master.yaml file.
databaseChangeLog:
- includeAll:
path: "db/migrations/"
That's it.
- Liquigen will create the directory automatically.
How to use the latest source in your java project
- Add .ruby-version file to your project root path.
ruby-2.5.1
You can also use the other version.
- Add Gemfile file as well.
source 'https://rubygems.org'
gem 'liquigen', :git => 'https://github.com/jerecui/liquigen'
- Bundle install
bundle install
- cd your project in command line, type liquigen xxxxx
# say
liquigen add_table -t user id:integer name:string
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/jerecui/liquigen.
License The gem is available as open source under the terms of the MIT License.