2 Star 0 Fork 340

hxchjm / go-zero

forked from kevwan / go-zero 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
fn.go 3.36 KB
一键复制 编辑 原始数据 按行查看 历史
kingxt 提交于 2021-01-15 11:36 . optimized (#392)
package spec
import (
"errors"
"strings"
"github.com/tal-tech/go-zero/core/stringx"
"github.com/tal-tech/go-zero/tools/goctl/util"
)
const (
bodyTagKey = "json"
formTagKey = "form"
defaultSummaryKey = "summary"
)
var definedKeys = []string{bodyTagKey, formTagKey, "path"}
func (s Service) Routes() []Route {
var result []Route
for _, group := range s.Groups {
result = append(result, group.Routes...)
}
return result
}
func (m Member) Tags() []*Tag {
tags, err := Parse(m.Tag)
if err != nil {
panic(m.Tag + ", " + err.Error())
}
return tags.Tags()
}
func (m Member) IsOptional() bool {
if !m.IsBodyMember() {
return false
}
tag := m.Tags()
for _, item := range tag {
if item.Key == bodyTagKey {
if stringx.Contains(item.Options, "optional") {
return true
}
}
}
return false
}
func (m Member) IsOmitEmpty() bool {
if !m.IsBodyMember() {
return false
}
tag := m.Tags()
for _, item := range tag {
if item.Key == bodyTagKey {
if stringx.Contains(item.Options, "omitempty") {
return true
}
}
}
return false
}
func (m Member) IsOmitempty() bool {
if !m.IsBodyMember() {
return false
}
tag := m.Tags()
for _, item := range tag {
if item.Key == bodyTagKey {
if stringx.Contains(item.Options, "omitempty") {
return true
}
}
}
return false
}
func (m Member) GetPropertyName() (string, error) {
tags := m.Tags()
for _, tag := range tags {
if stringx.Contains(definedKeys, tag.Key) {
if tag.Name == "-" {
return util.Untitle(m.Name), nil
}
return tag.Name, nil
}
}
return "", errors.New("json property name not exist, member: " + m.Name)
}
func (m Member) GetComment() string {
return strings.TrimSpace(m.Comment)
}
func (m Member) IsBodyMember() bool {
if m.IsInline {
return true
}
tags := m.Tags()
for _, tag := range tags {
if tag.Key == bodyTagKey {
return true
}
}
return false
}
func (m Member) IsFormMember() bool {
if m.IsInline {
return false
}
tags := m.Tags()
for _, tag := range tags {
if tag.Key == formTagKey {
return true
}
}
return false
}
func (t DefineStruct) GetBodyMembers() []Member {
var result []Member
for _, member := range t.Members {
if member.IsBodyMember() {
result = append(result, member)
}
}
return result
}
func (t DefineStruct) GetFormMembers() []Member {
var result []Member
for _, member := range t.Members {
if member.IsFormMember() {
result = append(result, member)
}
}
return result
}
func (t DefineStruct) GetNonBodyMembers() []Member {
var result []Member
for _, member := range t.Members {
if !member.IsBodyMember() {
result = append(result, member)
}
}
return result
}
func (r Route) JoinedDoc() string {
doc := r.AtDoc.Text
if r.AtDoc.Properties != nil {
doc += r.AtDoc.Properties[defaultSummaryKey]
}
doc += strings.Join(r.Docs, " ")
return strings.TrimSpace(doc)
}
func (r Route) GetAnnotation(key string) string {
if r.Annotation.Properties == nil {
return ""
}
return r.Annotation.Properties[key]
}
func (g Group) GetAnnotation(key string) string {
if g.Annotation.Properties == nil {
return ""
}
return g.Annotation.Properties[key]
}
func (r Route) ResponseTypeName() string {
if r.ResponseType == nil {
return ""
}
return r.ResponseType.Name()
}
func (r Route) RequestTypeName() string {
if r.RequestType == nil {
return ""
}
return r.RequestType.Name()
}
Go
1
https://gitee.com/hxchjm/go-zero.git
git@gitee.com:hxchjm/go-zero.git
hxchjm
go-zero
go-zero
3eb88c4e4bf1

搜索帮助