goma

Usage

GoDoc

Example test database quest table

mysql> SHOW COLUMNS FROM quest;
+-----------+----------+------+-----+---------+-------+
| Field     | Type     | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+-------+
| id        | int(11)  | NO   | PRI | 0       |       |
| name      | text     | YES  |     | NULL    |       |
| detail    | text     | YES  |     | NULL    |       |
| create_at | datetime | YES  |     | NULL    |       |
+-----------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)

Example by gen

main.go(mysql)

package main

import (
    "fmt"
)

//go:generate goma gen --driver=mysql --user=admin --password=password --host=localhost --port=3306 --db=test

func main() {
    fmt.Println("Hello goma!")
}

driver and dataSource params.

  • driver="mysql": sql driver (mysql or postgres)
  • user="admin": database access user's name
  • password="password": database access user's password
  • host="localhost": database host
  • port=3306: database port
  • db="test": database name

postgres dataSource params.

  • ssl="disable": Valid values for sslmode see

goma options params.

  • dao="dao": generate dao root dirs
  • sql="sql": generate sql root dir
  • entity="entity": generate entity root dir

Example by gen-config

config.json

{
    "driver": "mysql",
    "user": "admin",
    "password": "password",
    "host": "localhost",
    "port": 3306,
    "db": "test"
}

main.go (mysql)

package main

import (
    "fmt"
)

//go:generate goma gen-config --path=config.json

func main() {
    fmt.Println("Hello goma!")
}
  • path="config.json": config file path

Run

$ go generate

Output

  • xxxxx1,xxxxx2: TableName
├── dao
│   ├── asset_gen.go
│   ├── queryargs_gen.go
│   ├── xxxxx1_gen.go
│   └── xxxxx2_gen.go
├── entity
│   ├── xxxxx1_gen.go
│   └── xxxxx2_gen.go
├── main.go
├── config.json
└── sql
    ├── xxxxx1
    │   ├── delete.sql
    │   ├── insert.sql
    │   ├── selectAll.sql
    │   ├── selectByID.sql
    │   └── update.sql
    └── xxxxx2
        ├── delete.sql
        ├── insert.sql
        ├── selectAll.sql
        ├── selectByID.sql
        └── update.sql

example code