Documentation ¶
Overview ¶
Package schema コード生成用の定義DSL
Index ¶
- Constants
- Variables
- func IDAndSuffixPathFormat(suffix string) string
- type Accessor
- type Argument
- type Arguments
- type EnvelopePayloadDesc
- type EnvelopeType
- type ExtendAccessor
- type FieldDesc
- type FieldTags
- type Model
- func (m *Model) FieldModels() []*Model
- func (m *Model) GoImportPath() string
- func (m *Model) GoPkg() string
- func (m *Model) GoType() string
- func (m *Model) GoTypeSourceCode() string
- func (m *Model) HasNakedType() bool
- func (m *Model) ImportStatements(additionalImports ...string) []string
- func (m *Model) ImportStatementsForModelDef(additionalImports ...string) []string
- func (m *Model) Type() meta.Type
- func (m *Model) ZeroInitializeSourceCode() string
- func (m *Model) ZeroValueSourceCode() string
- type Models
- type Operation
- func (o *Operation) AllArguments() Arguments
- func (o *Operation) AllResults() Results
- func (o *Operation) Argument(arg *Argument) *Operation
- func (o *Operation) Arguments(args []*Argument) *Operation
- func (o *Operation) DefineResult() *Model
- func (o *Operation) FileSafeName() string
- func (o *Operation) GetMethod() string
- func (o *Operation) GetPathFormat() string
- func (o *Operation) HasRequestEnvelope() bool
- func (o *Operation) HasResponseEnvelope() bool
- func (o *Operation) HasResults() bool
- func (o *Operation) ImportStatements(additionalImports ...string) []string
- func (o *Operation) IsRequestPlural() bool
- func (o *Operation) IsRequestSingular() bool
- func (o *Operation) IsResponsePlural() bool
- func (o *Operation) IsResponseSingular() bool
- func (o *Operation) MappableArgument(name string, model *Model) *Operation
- func (o *Operation) Method(method string) *Operation
- func (o *Operation) MethodName() string
- func (o *Operation) Models() Models
- func (o *Operation) Name(name string) *Operation
- func (o *Operation) PassthroughModelArgument(name string, model *Model) *Operation
- func (o *Operation) PassthroughModelArgumentWithEnvelope(name string, model *Model) *Operation
- func (o *Operation) PathFormat(pathFormat string) *Operation
- func (o *Operation) RequestEnvelope(descs ...*EnvelopePayloadDesc) *Operation
- func (o *Operation) RequestEnvelopePlural(descs ...*EnvelopePayloadDesc) *Operation
- func (o *Operation) RequestEnvelopeStructName() string
- func (o *Operation) RequestPayloads() []*EnvelopePayloadDesc
- func (o *Operation) ResourceIsGlobal() bool
- func (o *Operation) ResourceTypeName() string
- func (o *Operation) ResponseEnvelopeStructName() string
- func (o *Operation) ResponsePayloads() []*EnvelopePayloadDesc
- func (o *Operation) Result(m *Model) *Operation
- func (o *Operation) ResultFromEnvelope(m *Model, sourceField *EnvelopePayloadDesc) *Operation
- func (o *Operation) ResultPluralFromEnvelope(m *Model, sourceField *EnvelopePayloadDesc) *Operation
- func (o *Operation) ResultWithSourceField(sourceField string, m *Model) *Operation
- func (o *Operation) ResultsStatement() string
- func (o *Operation) ReturnErrorStatement() string
- func (o *Operation) StubFieldDefines() []string
- func (o *Operation) StubReturnStatement(receiverName string) string
- type OperationsDefineFunc
- type PayloadForm
- type Resource
- func (r *Resource) AddOperation(op *Operation)
- func (r *Resource) AddOperations(ops ...*Operation)
- func (r *Resource) DefineOperation(name string) *Operation
- func (r *Resource) DefineOperationApplianceCreate(nakedType meta.Type, createParam, result *Model) *Operation
- func (r *Resource) DefineOperationApplianceFind(nakedType meta.Type, findParam, result *Model) *Operation
- func (r *Resource) DefineOperationApplianceRead(nakedType meta.Type, result *Model) *Operation
- func (r *Resource) DefineOperationApplianceUpdate(nakedType meta.Type, updateParam, result *Model) *Operation
- func (r *Resource) DefineOperationBoot() *Operation
- func (r *Resource) DefineOperationCRUD(nakedType meta.Type, findParam, createParam, updateParam, result *Model) []*Operation
- func (r *Resource) DefineOperationCloseFTP() *Operation
- func (r *Resource) DefineOperationCommonServiceItemCreate(nakedType meta.Type, createParam, result *Model) *Operation
- func (r *Resource) DefineOperationCommonServiceItemFind(nakedType meta.Type, findParam, result *Model) *Operation
- func (r *Resource) DefineOperationCommonServiceItemRead(nakedType meta.Type, result *Model) *Operation
- func (r *Resource) DefineOperationCommonServiceItemUpdate(nakedType meta.Type, updateParam, result *Model) *Operation
- func (r *Resource) DefineOperationConfig() *Operation
- func (r *Resource) DefineOperationCreate(nakedType meta.Type, createParam, result *Model) *Operation
- func (r *Resource) DefineOperationDelete() *Operation
- func (r *Resource) DefineOperationFind(nakedType meta.Type, findParam, result *Model) *Operation
- func (r *Resource) DefineOperationMonitor(monitorParam, result *Model) *Operation
- func (r *Resource) DefineOperationMonitorChild(funcNameSuffix, childResourceName string, monitorParam, result *Model) *Operation
- func (r *Resource) DefineOperationMonitorChildBy(funcNameSuffix, childResourceName string, monitorParam, result *Model) *Operation
- func (r *Resource) DefineOperationOpenFTP(openParam, result *Model) *Operation
- func (r *Resource) DefineOperationPowerManagement() []*Operation
- func (r *Resource) DefineOperationRead(nakedType meta.Type, result *Model) *Operation
- func (r *Resource) DefineOperationReset() *Operation
- func (r *Resource) DefineOperationShutdown() *Operation
- func (r *Resource) DefineOperationStatus(nakedType meta.Type, result *Model) *Operation
- func (r *Resource) DefineOperationUpdate(nakedType meta.Type, updateParam, result *Model) *Operation
- func (r *Resource) DefineSimpleOperation(opName, method, pathSuffix string, arguments ...*Argument) *Operation
- func (r *Resource) FieldName(form PayloadForm) string
- func (r *Resource) FileSafeName() string
- func (r *Resource) GetPathName() string
- func (r *Resource) GetPathSuffix() string
- func (r *Resource) ImportStatements(additionalImports ...string) []string
- func (r *Resource) Operations() []*Operation
- func (r *Resource) TypeName() string
- type Resources
- func (r *Resources) Def(rs *Resource)
- func (r *Resources) Define(name string) *Resource
- func (r *Resources) DefineWith(name string, f func(*Resource)) *Resource
- func (r Resources) ImportStatements(additionalImports ...string) []string
- func (r Resources) ImportStatementsForModelDef(additionalImports ...string) []string
- func (r Resources) Models() Models
- type Result
- func (r *Result) GoImportPath() string
- func (r *Result) GoPkg() string
- func (r *Result) GoType() string
- func (r *Result) GoTypeSourceCode() string
- func (r *Result) ImportStatements(additionalImports ...string) []string
- func (r *Result) Type() meta.Type
- func (r *Result) ZeroInitializeSourceCode() string
- func (r *Result) ZeroValueSourceCode() string
- type Results
Constants ¶
const ( // DefaultPathFormat デフォルトのパスフォーマット DefaultPathFormat = "{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}" // CloudAPISuffix IaaSリソースでのAPIサフィックス CloudAPISuffix = "api/cloud/1.1" // BillingAPISuffix 課金関連でのAPIサフィックス BillingAPISuffix = "api/system/1.0" // WebAccelAPISuffix ウェブアクセラレータ関連でのAPIサフィックス WebAccelAPISuffix = "api/webaccel/1.0" )
Variables ¶
var ( // ArgumentID 引数でのIDを示すValue ArgumentID = &Argument{ Name: "id", Type: meta.TypeID, } // ArgumentZone 引数でのゾーンを示すValue ArgumentZone = &Argument{ Name: "zone", Type: meta.TypeString, } )
var ( // DefaultPathFormatWithID デフォルトのパス+IDのパスフォーマット DefaultPathFormatWithID = fmt.Sprintf("%s/{{.%s}}", DefaultPathFormat, ArgumentID.ArgName()) )
var IsOutOfSacloudPackage = false
IsOutOfSacloudPackage コード生成時、*Modelがパッケージ名を付与すべきかの判定に利用するフラグ
var PayloadForms = struct { Singular PayloadForm Plural PayloadForm }{ Singular: PayloadForm(0), Plural: PayloadForm(1), }
PayloadForms ペイロードの形体
Functions ¶
func IDAndSuffixPathFormat ¶
IDAndSuffixPathFormat デフォルトのパス+ID+指定のサフィックスのパスフォーマット
Types ¶
type Accessor ¶
type Accessor struct { Name string Description string AccessorTypeName string // accessorパッケージ配下のインターフェース名 ResultType meta.Type }
Accessor モデルに拡張アクセサを持たせるための定義
type Argument ¶
type Argument struct { Name string // パラメータ名、引数名に利用される Type meta.Type // パラメータの型情報 MapConvTag string }
Argument 引数の型情報
func (*Argument) ImportStatements ¶
ImportStatements コード生成時に利用するimport文を生成する
func (*Argument) MapConvTagSrc ¶
MapConvTagSrc コード上でのmapconvタグの文字列表現。コード生成時に利用する
func (*Argument) PackageName ¶
PackageName インポートパスからパッケージ名を取得する
func (*Argument) ZeroInitializer ¶
ZeroInitializer 値を0初期化する文のコードの文字列表現、コード生成で利用される
func (*Argument) ZeroValueOnSource ¶
ZeroValueOnSource コード上でのゼロ値の文字列表現。コード生成時に利用する
type EnvelopePayloadDesc ¶
type EnvelopePayloadDesc struct { PayloadName string // ペイロードのフィールド名 PayloadType meta.Type // ペイロードの型情報 Tags *FieldTags }
EnvelopePayloadDesc エンベロープに含まれるペイロードの情報
func (*EnvelopePayloadDesc) TagString ¶
func (d *EnvelopePayloadDesc) TagString() string
TagString タグの文字列表現
func (*EnvelopePayloadDesc) TypeName ¶
func (d *EnvelopePayloadDesc) TypeName() string
TypeName ペイロードの型定義
type EnvelopeType ¶
type EnvelopeType struct { Form PayloadForm // ペイロードの形体(単数/複数) Payloads []*EnvelopePayloadDesc }
EnvelopeType Modelを用いてAPIとやりとりする際のリクエスト/レスポンスのエンベロープ
func (*EnvelopeType) PayloadName ¶
func (f *EnvelopeType) PayloadName() string
PayloadName ペイロード名を取得
func (*EnvelopeType) PayloadType ¶
func (f *EnvelopeType) PayloadType() meta.Type
PayloadType ペイロードの型情報を取得
type ExtendAccessor ¶
type ExtendAccessor struct { // Name 拡張アクセッサ名、Get+Name,Set+Nameなfuncが生成される Name string // AvoidGetter trueの場合Getの生成を抑制 AvoidGetter bool // AvoidSetter trueの場合Setの生成を抑制 AvoidSetter bool // Type 引数の型(省略可能) Type meta.Type }
ExtendAccessor 拡張アクセッサ
func (*ExtendAccessor) TypeName ¶
func (a *ExtendAccessor) TypeName() string
TypeName フィールドの型を返す、コード生成で利用される
type FieldDesc ¶
type FieldDesc struct { Name string Tags *FieldTags Type meta.Type Description string // TODO 現在は未使用 ExtendAccessors []*ExtendAccessor // 拡張アクセッサ、Get+指定の名前、Set+指定の名前で拡張アクセッサコードが生成される }
FieldDesc フィールド記述
type FieldTags ¶
type FieldTags struct { // JSON jsonタグ JSON string // YAML yamlタグ YAML string // Structs structsタグ Structs string // MapConv mapconvタグ MapConv string // Validate validateタグ Validate string }
FieldTags フィールドに付与するタグ
type Model ¶
type Model struct { Name string // 型名 Fields []*FieldDesc // フィールド定義 Accessors []*Accessor // アクセサ NakedType meta.Type // 対応するnaked型の情報 IsArray bool }
Model APIのリクエスト/レスポンスなどのデータ型を示すモデル
func (*Model) FieldModels ¶
FieldModels フィールド定義に含まれる*Model(FieldDesc.Type)を取得
func (*Model) GoTypeSourceCode ¶
GoTypeSourceCode ソースコードでの型表現
func (*Model) HasNakedType ¶
HasNakedType 対応するnaked型の情報が登録されているか
func (*Model) ImportStatements ¶
ImportStatements コード生成時に利用するimport文を生成する
func (*Model) ImportStatementsForModelDef ¶
ImportStatementsForModelDef モデルのフィールドを含めたimport文を生成する
func (*Model) ZeroInitializeSourceCode ¶
ZeroInitializeSourceCode 型に応じたzero値での初期化コード
func (*Model) ZeroValueSourceCode ¶
ZeroValueSourceCode 型に応じたzero値コード
type Models ¶
type Models []*Model
Models APIのリクエスト/レスポンスなどのデータ型を示すモデル
func (Models) ImportStatements ¶
ImportStatements コード生成時に利用するimport文を生成する
type Operation ¶
type Operation struct {
// contains filtered or unexported fields
}
Operation リソースへの操作
func (*Operation) AllArguments ¶
AllArguments 設定されている全てのArgumentを取得
func (*Operation) DefineResult ¶
DefineResult 操作に対するレスポンスの定義
func (*Operation) FileSafeName ¶
FileSafeName スネークケースにしたResourceの名前、コード生成時の保存先ファイル名に利用される
func (*Operation) GetPathFormat ¶
GetPathFormat パスのフォーマット
func (*Operation) HasRequestEnvelope ¶
HasRequestEnvelope リクエストエンベロープが設定されているか
func (*Operation) HasResponseEnvelope ¶
HasResponseEnvelope レスポンスエンベロープが設定されているか
func (*Operation) ImportStatements ¶
ImportStatements コード生成時に利用するimport文を生成する
func (*Operation) IsRequestPlural ¶
IsRequestPlural リクエストが複数形か
func (*Operation) IsRequestSingular ¶
IsRequestSingular リクエストが単数系か
func (*Operation) IsResponsePlural ¶
IsResponsePlural レスポンスが複数形か
func (*Operation) IsResponseSingular ¶
IsResponseSingular レスポンスが単数系か
func (*Operation) MappableArgument ¶
MappableArgument 引数定義の追加
func (*Operation) MethodName ¶
MethodName コード生成時に利用する、メソッド名を出力する
func (*Operation) PassthroughModelArgument ¶
PassthroughModelArgument 引数定義の追加
func (*Operation) PassthroughModelArgumentWithEnvelope ¶
PassthroughModelArgumentWithEnvelope 引数定義の追加、ペイロードの定義も同時に行われる
func (*Operation) PathFormat ¶
PathFormat パスのフォーマット、省略した場合はDefaultPathFormatが設定される
func (*Operation) RequestEnvelope ¶
func (o *Operation) RequestEnvelope(descs ...*EnvelopePayloadDesc) *Operation
RequestEnvelope リクエストのエンベロープを追加する
func (*Operation) RequestEnvelopePlural ¶
func (o *Operation) RequestEnvelopePlural(descs ...*EnvelopePayloadDesc) *Operation
RequestEnvelopePlural リクエストのエンベロープを複数形として追加する
func (*Operation) RequestEnvelopeStructName ¶
RequestEnvelopeStructName エンベロープのstruct名
func (*Operation) RequestPayloads ¶
func (o *Operation) RequestPayloads() []*EnvelopePayloadDesc
RequestPayloads リクエストペイロードを取得
func (*Operation) ResourceIsGlobal ¶
ResourceIsGlobal リソースがグローバルリソースか
func (*Operation) ResourceTypeName ¶
ResourceTypeName リソースの名称を取得
func (*Operation) ResponseEnvelopeStructName ¶
ResponseEnvelopeStructName エンベロープのstruct名
func (*Operation) ResponsePayloads ¶
func (o *Operation) ResponsePayloads() []*EnvelopePayloadDesc
ResponsePayloads レスポンスペイロードを取得
func (*Operation) ResultFromEnvelope ¶
func (o *Operation) ResultFromEnvelope(m *Model, sourceField *EnvelopePayloadDesc) *Operation
ResultFromEnvelope エンベロープから抽出するレスポンス定義の追加
func (*Operation) ResultPluralFromEnvelope ¶
func (o *Operation) ResultPluralFromEnvelope(m *Model, sourceField *EnvelopePayloadDesc) *Operation
ResultPluralFromEnvelope エンベロープから抽出するレスポンス定義の追加(複数形)
func (*Operation) ResultWithSourceField ¶
ResultWithSourceField レスポンス定義の追加
func (*Operation) ResultsStatement ¶
ResultsStatement 戻り値定義部のソースを出力
func (*Operation) ReturnErrorStatement ¶
ReturnErrorStatement コード生成時に利用する、エラーをreturnする文を生成する
func (*Operation) StubFieldDefines ¶
StubFieldDefines スタブ生成時のフィールド定義文を全フィールド分出力
func (*Operation) StubReturnStatement ¶
StubReturnStatement スタブ生成時のreturn文
type OperationsDefineFunc ¶
OperationsDefineFunc リソースに対するオペレーション定義用Func
type Resource ¶
type Resource struct { Name string // リソース名 e.g.: Server PathName string // リソースのパス名 APIのURLで利用される e.g.: server 省略した場合はNameを小文字にしたものとなる PathSuffix string // APIのURLで利用されるプレフィックス e.g.: api/cloud/1.1 IsGlobal bool // 全ゾーンで共通リソース(グローバルリソース) OperationsDefineFunc OperationsDefineFunc // このリソースに対する操作を定義するFunc // contains filtered or unexported fields }
Resource APIで操作する対象のリソース
func (*Resource) AddOperation ¶
AddOperation リソースに対する操作の定義を追加
func (*Resource) AddOperations ¶
AddOperations リソースに対する操作の定義を追加
func (*Resource) DefineOperation ¶
DefineOperation リソースに対する操作の定義
func (*Resource) DefineOperationApplianceCreate ¶
func (r *Resource) DefineOperationApplianceCreate(nakedType meta.Type, createParam, result *Model) *Operation
DefineOperationApplianceCreate Create操作を定義
func (*Resource) DefineOperationApplianceFind ¶
func (r *Resource) DefineOperationApplianceFind(nakedType meta.Type, findParam, result *Model) *Operation
DefineOperationApplianceFind Find操作を定義
func (*Resource) DefineOperationApplianceRead ¶
DefineOperationApplianceRead Read操作を定義
func (*Resource) DefineOperationApplianceUpdate ¶
func (r *Resource) DefineOperationApplianceUpdate(nakedType meta.Type, updateParam, result *Model) *Operation
DefineOperationApplianceUpdate Update操作を定義
func (*Resource) DefineOperationBoot ¶
DefineOperationBoot リソースに対するBoot操作を定義
func (*Resource) DefineOperationCRUD ¶
func (r *Resource) DefineOperationCRUD(nakedType meta.Type, findParam, createParam, updateParam, result *Model) []*Operation
DefineOperationCRUD リソースに対する基本的なCRUDを定義
func (*Resource) DefineOperationCloseFTP ¶
DefineOperationCloseFTP FTPクローズ操作を定義
func (*Resource) DefineOperationCommonServiceItemCreate ¶
func (r *Resource) DefineOperationCommonServiceItemCreate(nakedType meta.Type, createParam, result *Model) *Operation
DefineOperationCommonServiceItemCreate Create操作を定義
func (*Resource) DefineOperationCommonServiceItemFind ¶
func (r *Resource) DefineOperationCommonServiceItemFind(nakedType meta.Type, findParam, result *Model) *Operation
DefineOperationCommonServiceItemFind Find操作を定義
func (*Resource) DefineOperationCommonServiceItemRead ¶
func (r *Resource) DefineOperationCommonServiceItemRead(nakedType meta.Type, result *Model) *Operation
DefineOperationCommonServiceItemRead Read操作を定義
func (*Resource) DefineOperationCommonServiceItemUpdate ¶
func (r *Resource) DefineOperationCommonServiceItemUpdate(nakedType meta.Type, updateParam, result *Model) *Operation
DefineOperationCommonServiceItemUpdate Update操作を定義
func (*Resource) DefineOperationConfig ¶
DefineOperationConfig Config操作を定義
func (*Resource) DefineOperationCreate ¶
func (r *Resource) DefineOperationCreate(nakedType meta.Type, createParam, result *Model) *Operation
DefineOperationCreate Create操作を定義
func (*Resource) DefineOperationDelete ¶
DefineOperationDelete Delete操作を定義
func (*Resource) DefineOperationFind ¶
DefineOperationFind Find操作を定義
func (*Resource) DefineOperationMonitor ¶
DefineOperationMonitor アクティビティモニタ取得操作を定義
func (*Resource) DefineOperationMonitorChild ¶
func (r *Resource) DefineOperationMonitorChild(funcNameSuffix, childResourceName string, monitorParam, result *Model) *Operation
DefineOperationMonitorChild アクティビティモニタ取得操作を定義
func (*Resource) DefineOperationMonitorChildBy ¶
func (r *Resource) DefineOperationMonitorChildBy(funcNameSuffix, childResourceName string, monitorParam, result *Model) *Operation
DefineOperationMonitorChildBy アプライアンスなどでの内部リソースインデックスを持つアクティビティモニタ取得操作を定義
func (*Resource) DefineOperationOpenFTP ¶
DefineOperationOpenFTP FTPオープン操作を定義
func (*Resource) DefineOperationPowerManagement ¶
DefineOperationPowerManagement リソースに対する電源管理操作を定義
func (*Resource) DefineOperationRead ¶
DefineOperationRead Read操作を定義
func (*Resource) DefineOperationReset ¶
DefineOperationReset リソースに対するリセット操作を定義
func (*Resource) DefineOperationShutdown ¶
DefineOperationShutdown リソースに対するシャットダウン操作を定義
func (*Resource) DefineOperationStatus ¶
DefineOperationStatus ステータス取得操作を定義
func (*Resource) DefineOperationUpdate ¶
func (r *Resource) DefineOperationUpdate(nakedType meta.Type, updateParam, result *Model) *Operation
DefineOperationUpdate Update操作を定義
func (*Resource) DefineSimpleOperation ¶
func (r *Resource) DefineSimpleOperation(opName, method, pathSuffix string, arguments ...*Argument) *Operation
DefineSimpleOperation ID+αのみを引数にとるシンプルなオペレーションを定義
func (*Resource) FieldName ¶
func (r *Resource) FieldName(form PayloadForm) string
FieldName ペイロードなどで利用される場合のフィールド名を返す
func (*Resource) FileSafeName ¶
FileSafeName スネークケースにしたResourceの名前、コード生成時の保存先ファイル名に利用される
func (*Resource) GetPathName ¶
GetPathName リソースのパス名 APIのエンドポイントURLの算出で利用される 例: server
省略した場合はNameをスネークケース(小文字+アンダーバー)に変換したものが利用される
func (*Resource) GetPathSuffix ¶
GetPathSuffix PathSuffixの取得
func (*Resource) ImportStatements ¶
ImportStatements コード生成時に利用するimport文を生成する
func (*Resource) Operations ¶
Operations リソースに対する操作の定義を取得
type Resources ¶
type Resources []*Resource
Resources []*Resourceのエイリアス
func (*Resources) DefineWith ¶
DefineWith リソースの定義 & 定義したリソースを利用するfuncの実施
func (Resources) ImportStatements ¶
ImportStatements コード生成時に利用するimport文を生成する
func (Resources) ImportStatementsForModelDef ¶
ImportStatementsForModelDef Resources配下に含まれる全てのモデルのフィールドを含めたimport文を生成する
type Result ¶
Result Operationでの戻り値定義
func (*Result) GoTypeSourceCode ¶
GoTypeSourceCode ソースコードでの型表現
func (*Result) ImportStatements ¶
ImportStatements コード生成時に利用するimport文を生成する
func (*Result) ZeroInitializeSourceCode ¶
ZeroInitializeSourceCode 型に応じたzero値での初期化コード
func (*Result) ZeroValueSourceCode ¶
ZeroValueSourceCode 型に応じたzero値コード