SkillAgentSearch skills...

Eevee

Generate model, repository, dao sources for Go application

Install / Use

/learn @blastrain/Eevee
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

eevee

GoDoc Go codecov Go Report Card

Generate model, repository, dao sources for Go application

<img width="500px" src="https://user-images.githubusercontent.com/209884/79103149-0ed3e680-7da7-11ea-8b89-474a01db7bad.png"></img>

eevee はアプリケーション開発時に必要となる
キャッシュやデータベースといったミドルウェアとの効率的なデータのやりとりや
開発時に生じる冗長な作業を自動化するための仕組みを提供します。

データをいかに簡単かつ効率的に参照し書き込めるかということにフォーカスしているため、
ルーティングなどの機能は提供していません。
そのため、 echochigoji といったアプリケーションフレームワークと同時に利用することを想定しています。

goa が提供しているような APIリクエスト・レスポンス を自動生成する機能等も存在しますが、
プロジェクトにあわせて導入するしないを判断することができます。

eevee が提供する機能は主に次のようなものです。

  • スキーマ駆動開発によるモデル・リポジトリ層の自動生成
  • モデル間の依存関係の自動解決
  • Eager Loading / Lazy Loading を利用した効率的なデータ参照
  • テスト開発を支援する mock インスタンス作成機能
  • モデルからJSON文字列への高速な変換
  • API リクエスト・レスポンスとそのドキュメントの自動生成
  • プラグインを用いた柔軟なカスタマイズ

eevee は 600 を超えるテーブル、150万行を超える規模のアプリケーション開発を日々支えており、
小規模開発から大規模開発まで様々な用途で利用することができます。

<!-- TOC -->

目次

<!-- /TOC -->

使い方

まずは実際に eevee を利用することで何ができるようになるのかを見ていきます。
ここで紹介しているコードは _example/01_simple 配下に置かれています。

eevee のインストール

$ go get go.knocknote.io/eevee/cmd/eevee

無事インストールできていれば、 $GOPATH/bin/eevee があるはずです。
eevee --help が実行できれば、インストールは完了です

作業ディレクトリの作成

アプリケーション開発のための作業用ディレクトリを作成してください

go.mod ファイルの作成

いつものように go.mod ファイルを作成してください

$ go mod init simple

アプリケーションコードの作成

今回は echo の https://echo.labstack.com/cookbook/crud をベースに eevee を利用したいと思います。

リンク先にあるコードは以下のようになっています。

package main

import (
  "net/http"
  "strconv"

  "github.com/labstack/echo"
  "github.com/labstack/echo/middleware"
)

type (
  user struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
  }
)

var (
  users = map[int]*user{}
  seq   = 1
)

func createUser(c echo.Context) error {
  u := &user{
    ID: seq,
  }
  if err := c.Bind(u); err != nil {
    return err
  }
  users[u.ID] = u
  seq++
  return c.JSON(http.StatusCreated, u)
}

func getUser(c echo.Context) error {
  id, _ := strconv.Atoi(c.Param("id"))
  return c.JSON(http.StatusOK, users[id])
}

func updateUser(c echo.Context) error {
  u := new(user)
  if err := c.Bind(u); err != nil {
    return err
  }
  id, _ := strconv.Atoi(c.Param("id"))
  users[id].Name = 
View on GitHub
GitHub Stars56
CategoryDevelopment
Updated2y ago
Forks4

Languages

Go

Security Score

85/100

Audited on Mar 30, 2023

No findings