📑

golangのGojiraを利用してみた

2022/09/07に公開

はじめに

自分はgo初心者で、ここ最近goの勉強を始めました
そこで、goにginを入れて開発する上でディレクトリ構成がフリーダムになりかねなかったので、
Clean Architectureを調べてたところ、gojiraというCLIがあることを知ったので、利用する上でのメモです

githubは、こちら
https://github.com/saturnavt/gojira

特徴(google先生の翻訳)


環境

フォルダ構成

project(ディレクトリ)
├ docker-compose.yml
├ react(ディレクトリ)
└ api(ディレクトリ)  ← 今回はここだけ
  └ dockerfile

dockerfile

FROM golang:1.16

RUN apt-get update && apt-get install -y build-essential make

WORKDIR /go/src/app

COPY . /go/src/app/

docker-compose.yml(抜粋)

services:
  api:
    container_name: api
    build:
      context: ./api
    ports:
      - 8080:8080
    volumes:
      - ./api:/go/src/app
    tty: true

コマンド実行

docker compose build api
docker compose run --rm api sh

インストール

go get github.com/saturnavt/gojira
go mod init api
go mod tidy

gojiraのcli一覧

root@0b8786d04a62:/go/src/app# gojira
NAME:
   
   _____        _ _
  / ____|      (_|_)
  | |  __  ___  _ _ _ __ __ _
  | | |_ |/ _ \| | | '__/ _  |
  | |__| | (_) | | | | | (_| |
   \_____|\___/| |_|_|  \__,_|
              _/ |
              |__/ - Alejandro Castillo

USAGE:
   gojira [global options] command [command options] [arguments...]

DESCRIPTION:
   Gojira is a cli tool to create clean architecture app for you including gin-gonic, bcrypt and jwt.

COMMANDS:
   new            (gojira new --folder yourProjectName) This will generate a new project with example files
   module         (gojira module --generate-crud yourModuleName) This will create a new module with crud flow
   module-simple  (gojira module-simple --generate yourModuleName) This will create a new module with simple example
   db             (gojira db --client yourSelection) This will To create a new db service client, yourSelection can be (mysql, gorm or prisma)
   help, h        Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h  show help (default: false)

プロジェクト構築

コマンドを実行

gojira new --folder .
gojira db --client gorm  # DBクライアントはgormをチョイス

上記のコマンドで作られたファイルを見ると
インポート部分のパスが異なるので、全て修正

package main

import (
	db "github.com/app/infraestructure/databases"
          -------------
	router "github.com/./routing"
              ------------
)

swaggerのインストール

go get github.com/swaggo/swag@latest
go mod tidy
swag init

実行

go run main.go

以下のURLでswaggerが見れれば成功となります
http://localhost:5000/swagger/index.html

Discussion