github.com/unionj-cloud/go-doudou/v2@v2.3.5/toolkit/gormgen/helper/object.go (about)

     1  package helper
     2  
     3  import (
     4  	"errors"
     5  	"fmt"
     6  
     7  	"github.com/unionj-cloud/go-doudou/v2/toolkit/gormgen/field"
     8  )
     9  
    10  // Object an object interface
    11  type Object interface {
    12  	// TableName return table name
    13  	TableName() string
    14  	// StructName return struct name
    15  	StructName() string
    16  	// FileName return field name
    17  	FileName() string
    18  	// ImportPkgPaths return need import package path
    19  	ImportPkgPaths() []string
    20  
    21  	// Fields return field array
    22  	Fields() []Field
    23  }
    24  
    25  // Field a field interface
    26  type Field interface {
    27  	// Name return field name
    28  	Name() string
    29  	// Type return field type
    30  	Type() string
    31  
    32  	// ColumnName return column name
    33  	ColumnName() string
    34  	// GORMTag return gorm tag
    35  	GORMTag() string
    36  	// JSONTag return json tag
    37  	JSONTag() string
    38  	// Tag return field tag
    39  	Tag() field.Tag
    40  
    41  	// Comment return comment
    42  	Comment() string
    43  }
    44  
    45  // CheckObject check ojbect
    46  func CheckObject(obj Object) error {
    47  	if obj.StructName() == "" {
    48  		return errors.New("Object's StructName() cannot be empty")
    49  	}
    50  
    51  	for _, field := range obj.Fields() {
    52  		switch "" {
    53  		case field.Name():
    54  			return fmt.Errorf("Object %s's Field.Name() cannot be empty", obj.StructName())
    55  		case field.Type():
    56  			return fmt.Errorf("Object %s's Field.Type() cannot be empty", obj.StructName())
    57  		}
    58  	}
    59  	return nil
    60  }