Ar2gostruct
Automatically generate Golang Struct from your activerecord models.
Installation
Install GMO as a gem:
gem install ar2gostruct
or add to your Gemfile:
# Gemfile
gem "ar2gostruct"
and run bundle install to install the dependency.
Usage
On your rails directory.
bundle exec rake ar2gostruct association=true
# association option enables Active Record Associations (Needs ar2gostruct v0.2.0 or greater).
# or
bundle exec ar2gostruct --a
# If you prefer plural struct name, "--plural" option is available.
this will returns
// app/models/user.rb
// Table name: users
type User struct {
Id int32 `json:"id"`
Email string `json:"email"`
EncryptedPassword string `json:"encrypted_password"`
ResetPasswordToken string `json:"reset_password_token"`
ResetPasswordSentAt time.Time `json:"reset_password_sent_at"`
RememberCreatedAt time.Time `json:"remember_created_at"`
SignInCount int32 `json:"sign_in_count"`
CurrentSignInAt time.Time `json:"current_sign_in_at"`
LastSignInAt time.Time `json:"last_sign_in_at"`
CurrentSignInIp string `json:"current_sign_in_ip"`
LastSignInIp string `json:"last_sign_in_ip"`
ConfirmationToken string `json:"confirmation_token"`
ConfirmedAt time.Time `json:"confirmed_at"`
ConfirmationSentAt time.Time `json:"confirmation_sent_at"`
UnconfirmedEmail string `json:"unconfirmed_email"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Profile Profile `json:"profile"`
Projects []Project `json:"projects"`
}
If you're using qbs, gorm or validator, Additional options are available.
bundle exec rake ar2gostruct orm=qbs
# or
ar2gostruct -o qbs
# Using comma separated value, you can specify multiple ORMs(e.g. "ar2gostruct --o validator,qbs").
// app/models/user.rb
// Table name: users
type User struct {
Id int32 `json:"id" qbs:"pk,notnull"`
Email string `json:"email" qbs:"notnull,default:''"`
EncryptedPassword string `json:"encrypted_password" qbs:"notnull,default:''"`
ResetPasswordToken string `json:"reset_password_token"`
ResetPasswordSentAt time.Time `json:"reset_password_sent_at"`
RememberCreatedAt time.Time `json:"remember_created_at"`
SignInCount int32 `json:"sign_in_count" qbs:"default:'0'"`
CurrentSignInAt time.Time `json:"current_sign_in_at"`
LastSignInAt time.Time `json:"last_sign_in_at"`
CurrentSignInIp string `json:"current_sign_in_ip"`
LastSignInIp string `json:"last_sign_in_ip"`
ConfirmationToken string `json:"confirmation_token"`
ConfirmedAt time.Time `json:"confirmed_at"`
ConfirmationSentAt time.Time `json:"confirmation_sent_at"`
UnconfirmedEmail string `json:"unconfirmed_email"`
CreatedAt time.Time `json:"created_at" qbs:"created"`
UpdatedAt time.Time `json:"updated_at" qbs:"updated"`
}
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request