Skip to content

t-k/ar2gostruct

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ar2gostruct

Gem Version Build Status

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

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

About

Generate Go (golang) Struct from activerecord models

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages