sqlc-use

module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 21, 2025 License: MIT

README

sqlc-use

sqlc-useはsqlcプラグインで、それぞれのクエリがテーブルに対してどのような操作をするかを表現するJSONを生成します。

インストール

go install github.com/naoyafurudono/sqlc-use/cmd/sqlc-use@latest

仕様

出力ファイル
  • ファイル名: query-table-operations.json
  • 出力先: sqlc.yamlcodegen.outで指定したディレクトリ
出力フォーマット
{
  "[package.]クエリ名": [
    {
      "operation": "操作タイプ",
      "table": "テーブル名"
    }
  ]
}
  • 操作タイプ: select, insert, update, delete
  • テーブル名: SQL内で操作されているテーブル名
  • JOINで複数テーブルを操作する場合、各テーブルが個別に記録されます
  • JSON Schema: 出力形式の詳細な定義はschema/query-table-operations.schema.jsonを参照
設定方法

sqlc.yaml:

version: "2"
plugins:
  - name: sqlc-use
    process:
      cmd: sqlc-use # パスまたはコマンド名
sql:
  - schema: schema.sql
    queries: query.sql
    engine: mysql # 現在はmysqlのみサポート
    codegen:
      - out: gen # 出力ディレクトリ
        plugin: sqlc-use
オプション

プラグインオプションは sqlc.yamloptions フィールドで指定できます:

codegen:
  - out: gen
    plugin: sqlc-use
    options:
      package: db  # クエリ名のプレフィックス(オプション)
      format: json # 出力フォーマット(デフォルト: json)
  • package: 指定した場合、出力されるクエリ名が package.QueryName の形式になります
  • format: 現在は json のみサポート

入力
-- name: ListOrganizationMember :many
select user.* from user
inner join member on user.id = member.user_id
inner join organization on organization.id = member.organization_id
where organization.name = ?;

-- name: AddMember :exec
insert into member (user_id, organization_id) values (?, ?);

-- name: RemoveMember :exec
delete from member where user_id = ? and organization_id = ?;
出力

gen/query-table-operations.json:

{
  "db.ListOrganizationMember": [
    {
      "operation": "select",
      "table": "user"
    },
    {
      "operation": "select",
      "table": "member"
    },
    {
      "operation": "select",
      "table": "organization"
    }
  ],
  "db.AddMember": [
    {
      "operation": "insert",
      "table": "member"
    }
  ],
  "db.RemoveMember": [
    {
      "operation": "delete",
      "table": "member"
    }
  ]
}

使い方

  1. sqlc.yamlに上記の設定を追加
  2. sqlc generateを実行
  3. 指定した出力ディレクトリにquery-table-operations.jsonが生成されます

バージョニング

このプロジェクトはセマンティックバージョニングに従います。

  • メジャーバージョン: 後方互換性のない変更
  • マイナーバージョン: 後方互換性のある機能追加
  • パッチバージョン: 後方互換性のあるバグ修正

ライセンス

MITライセンス

Directories

Path Synopsis
cmd
sqlc-use command
Package main is the entry point for the sqlc-use plugin.
Package main is the entry point for the sqlc-use plugin.
internal
analyzer
Package analyzer provides interfaces and implementations for analyzing SQL queries.
Package analyzer provides interfaces and implementations for analyzing SQL queries.
formatter
Package formatter provides interfaces and implementations for formatting query effects reports.
Package formatter provides interfaces and implementations for formatting query effects reports.
models
Package models defines the data structures used for representing SQL query effects.
Package models defines the data structures used for representing SQL query effects.
plugin
Package plugin implements the main sqlc-use plugin logic for analyzing query usage.
Package plugin implements the main sqlc-use plugin logic for analyzing query usage.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL