当前位置: 首页>>代码示例>>Golang>>正文


Golang APIDefinition.IterateVersions方法代码示例

本文整理汇总了Golang中github.com/goadesign/goa/design.APIDefinition.IterateVersions方法的典型用法代码示例。如果您正苦于以下问题:Golang APIDefinition.IterateVersions方法的具体用法?Golang APIDefinition.IterateVersions怎么用?Golang APIDefinition.IterateVersions使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/goadesign/goa/design.APIDefinition的用法示例。


在下文中一共展示了APIDefinition.IterateVersions方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: Generate

// Generate the application code, implement codegen.Generator.
func (g *Generator) Generate(api *design.APIDefinition) (_ []string, err error) {
	if api == nil {
		return nil, fmt.Errorf("missing API definition, make sure design.Design is properly initialized")
	}

	go utils.Catch(nil, func() { g.Cleanup() })

	defer func() {
		if err != nil {
			g.Cleanup()
		}
	}()

	outdir := AppOutputDir()
	err = api.IterateVersions(func(v *design.APIVersionDefinition) error {
		verdir := outdir
		if v.Version != "" {
			verdir = filepath.Join(verdir, codegen.VersionPackage(v.Version))
		}
		if err := os.MkdirAll(verdir, 0755); err != nil {
			return err
		}
		if err := g.generateContexts(verdir, api, v); err != nil {
			return err
		}
		if err := g.generateControllers(verdir, v); err != nil {
			return err
		}
		if err := g.generateHrefs(verdir, v); err != nil {
			return err
		}
		if err := g.generateMediaTypes(verdir, v); err != nil {
			return err
		}
		if err := g.generateUserTypes(verdir, v); err != nil {
			return err
		}
		return nil
	})
	if err != nil {
		return nil, err
	}

	return g.genfiles, nil
}
开发者ID:DavyC,项目名称:goa,代码行数:46,代码来源:generator.go

示例2: generateUserTypes

// generateUserTypes iterates through the user types and generates the data structures and
// marshaling code.
func (g *Generator) generateUserTypes(outdir string, api *design.APIDefinition) error {
	err := api.IterateVersions(func(version *design.APIVersionDefinition) error {
		if version.Version != "" {
			return nil
		}
		var modelname, filename string
		err := GormaDesign.IterateStores(func(store *RelationalStoreDefinition) error {
			err := store.IterateModels(func(model *RelationalModelDefinition) error {
				modelname = strings.ToLower(codegen.Goify(model.Name, false))

				filename = fmt.Sprintf("%s_gen.go", modelname)
				utFile := filepath.Join(outdir, filename)
				err := os.RemoveAll(utFile)
				if err != nil {
					fmt.Println(err)
				}
				utWr, err := NewUserTypesWriter(utFile)
				if err != nil {
					panic(err) // bug
				}
				title := fmt.Sprintf("%s: Models", version.Context())
				ap, err := AppPackagePath()
				if err != nil {
					panic(err)
				}
				imports := []*codegen.ImportSpec{
					codegen.SimpleImport(ap),
					codegen.SimpleImport("github.com/jinzhu/gorm"),
					codegen.SimpleImport("golang.org/x/net/context"),
				}
				needDate := false
				for _, field := range model.RelationalFields {
					if field.Datatype == Timestamp || field.Datatype == NullableTimestamp {
						needDate = true
					}
				}
				if needDate {
					imp := codegen.SimpleImport("time")
					imports = append(imports, imp)
				}
				utWr.WriteHeader(title, "genmodels", imports)
				data := &UserTypeTemplateData{
					APIDefinition: api,
					UserType:      model,
					DefaultPkg:    TargetPackage,
					AppPkg:        AppPackage,
				}
				err = utWr.Execute(data)
				g.genfiles = append(g.genfiles, utFile)
				if err != nil {
					fmt.Println(err)
					return err
				}
				err = utWr.FormatCode()
				if err != nil {
					fmt.Println(err)
				}
				return err
			})
			return err
		})
		return err
	})
	return err
}
开发者ID:derekperkins,项目名称:gorma,代码行数:67,代码来源:generator.go


注:本文中的github.com/goadesign/goa/design.APIDefinition.IterateVersions方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。