Code Monkey home page Code Monkey logo

ginbro's Introduction

Build Status GoDoc Go Report Card stability-stable codebeat badge codecov

Ginbro is a scaffold tool for Gin-Gorm-MySQL which you just need to input one command to create a mighty RESTful APIs App.

Warning

- this Repo's code has transfered to Felix/ginbro, please visitdejavuzhou/felix

- 代码已经转移到dejavuzhou/felix/ginbro,请移步至dejavuzhou/felix/ginbro

Demo and Translated Document

Feature

Ginbro Installation

you can install it by go get command:

go get github.com/dejavuzhou/ginbro

the Ginbro executable binary will locate in $GOPATH/bin check GOBIN is in your environment PATH

Usage

1. ginbro gen generate a new Gin+Gorm+MySQL RESTful APIs Application with JWT middleware and auth

example

ginbro gen -u root -p Password -a "127.0.0.1:3306" -d databasename -o "github.com/user/awesome" -c utf8 --authTable=users --authPassword=password

$ ginbro gen -h
generate a RESTful APIs app with gin and gorm for gophers

Usage:
  ginbro gen [flags]

Examples:
ginbro gen -u root -p password -a "127.0.0.1:38306" -d dbname -c utf8 --authTable=users --authPassword=pw_column -o=github.com/dejavuzhou/ginbro/out"

Flags:
  -l, --appListen string      app listen Address eg:mojotv.cn, using domain will support gin-TLS (default "127.0.0.1:5555")
      --authPassword string   password bycrpt column (default "password")
      --authTable string      the MySQL login table (default "users")
  -h, --help                  help for gen
  -o, --outPackage string     output package relative to $GOPATH/src

Global Flags:
      --config string          config file (default is $HOME/ginbro.yaml)
  -a, --mysqlAddr string       MySQL host:port (default "127.0.0.1:3306")
  -c, --mysqlCharset string    MySQL charset (default "utf8")
  -d, --mysqlDatabase string   MySQL database name
  -p, --mysqlPassword string   MySQL password (default "password")
  -u, --mysqlUser string       MySQL user name (default "root")

the generated project directory ginbro DEMO-code-repository

2. ginbro bare generate a bare project with one resource which you have to edit the config.toml which is easy for you to customize

$ ginbro bare -h
create a bare project which its mysql flags are not necessary

Usage:
  ginbro bare [flags]

Examples:
ginbro bare -o=github.com/dejavuzhou/ginbro/out5"

Flags:
  -h, --help                help for bare
  -o, --outPackage string   output package relative to $GOPATH/src

3. ginbro model generate GORM models of tables in a MySQL database

$ genbro model -h
generate GORM models of MySQL tables.

Usage:
  ginbro model [flags]

Examples:
ginbro model -u root -p password -a 127.0.0.1:3306 -d venom -c utf8  -o=github.com/dejavuzhou/ginbro/out_model

Flags:
  -h, --help                help for model
  -o, --outPackage string   eg: models,the models will be created at $GOPATH/src/models

Global Flags:
      --config string          config file (default is $HOME/ginbro.yaml)
  -a, --mysqlAddr string       MySQL host:port (default "127.0.0.1:3306")
  -c, --mysqlCharset string    MySQL charset (default "utf8")
  -d, --mysqlDatabase string   MySQL database name
  -p, --mysqlPassword string   MySQL password (default "password")
  -u, --mysqlUser string       MySQL user name (default "root")

environment

  • my development environment
    • Windows 10 pro 64
    • go version go1.11.1 windows/amd64
    • mysql version <= 5.7

go packages

go get github.com/gin-contrib/cors
go get github.com/gin-contrib/static
go get github.com/gin-gonic/autotls
go get github.com/gin-gonic/gin
go get github.com/sirupsen/logrus
go get github.com/spf13/viper
go get github.com/spf13/cobra
go get github.com/go-redis/redis
go get github.com/go-sql-driver/mysql
go get github.com/jinzhu/gorm
go get github.com/dgrijalva/jwt-go

How to fix go get golang.org/x/crypto/bcrypt and go get golang.org/x/crypto/text error

mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/crypto
git clone https://github.com/golang/text

retry the commandgo get github.com/dejavuzhou/ginbro

Info

  • resource table'schema which has no "ID","id","Id'" or "iD" will not generate model or route.
  • the column which type is json value must be a string which is able to decode into a JSON, when resource is called POST or PATCH from the swaggerUI.

Thanks

Please feedback your issue with database schema file

ginbro's People

Contributors

mojocn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ginbro's Issues

jwt登录时,内存存储结构不一致

position:
jwt.go

if err := bcrypt.CompareHashAndPassword([]byte(m.Password), []byte(inputPassword)); err != nil {

		// when password failed reties will add 1

		loginRetries = loginRetries + 1

		mem.Set(loginTryKey, loginRetries)

		return nil, err
	}

	m.Password = ""

	//save login user  into the memory store

	 mem.Set(key, m)  //error:mem:has value of this id, but is not type of *jwtObj  报错

	return jwtGenerateToken(m)

model_user.go

if err != nil {

		logrus.WithError(err).Fatal("config is wrong, can not generate jwt")

	}

	data := &jwtObj{SysUser: *m, Token: tokenString, Expire: expireTime, ExpireTs: expireTime.Unix()}

	key := fmt.Sprintf("login:%d", m.Id)//set key name 

	mem.Set(key, data) //verified pass 验证通过

        return data, err

这里是不是有逻辑错误呢?新手提第一次提issue!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.