gotransform

package module
v0.0.0-...-4494905 Latest Latest
Warning

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

Go to latest
Published: Dec 31, 2019 License: MIT Imports: 7 Imported by: 0

README

go-transform

Build Status Code Coverage Go Report Card GoDoc Licenses

Require

  • go 1.13.x

支持格式化方式

  • 简单格式化
  • 自定义方法格式化
  • 关联数据格式化
  • 时间数据格式化
  • map数据格式化
  • excel 导入数据格式化

Example

golang 简单实现接口数据格式化

package main

import (
"fmt"
"time"

"github.com/snowlyg/gotransform"
)

// 基础数据模型  beego/orm 
type BaseModel struct {
	Id        int64
	CreatedAt time.Time `orm:"auto_now_add;type(datetime);column(created_at);type(timestamp)"`
	UpdatedAt time.Time `orm:"auto_now;type(datetime);column(updated_at);type(timestamp)"`
}

// 数据模型
type Model struct {
	BaseModel
	Name        string `orm:"column(Name);null" description:""`
	Rmk          string    `orm:"column(rmk);size(255);null" description:""`
	DeletedAt    time.Time `form:"-" orm:"column(deleted_at);type(timestamp);null" `
}

// 格式化数据
type Response struct {
	Id           int64
	Name         string
    Rmk          string
	DeletedAt    string
	CreatedAt    string
	UpdatedAt    string
}


func main()  {
    // struct
    response := Response{}
    baseModel := BaseModel{1,time.Now(),time.Now()}
    model := Model{baseModel,"name","remark",time.Now()}
    g := gotransform.NewTransform(&response, model, time.RFC3339)
    err := g.Transformer()
    if err != nil {
        _ = fmt.Sprintf("err:%v",err)
    }

    _ = fmt.Sprintf("response:%v",response)

    // slice
    models := []*Model{&model}
	var responses []*Response
	for _, m := range models {
		r := Response{}
		    g1 := gotransform.NewTransform(&r, m, time.RFC3339)
            err := g1.Transformer()
            if err != nil {
                _ = fmt.Sprintf("err:%v",err)
            }
           
		responses = append(responses, &r)
        _ = fmt.Sprintf("responses:%v",responses)
	}

}

Simple Relation Example

简单关联关系格式化,使用 gtf 标识加relationName.fieldName

// 基础数据模型  beego/orm 
type BaseModel struct {
	Id        int64
	CreatedAt time.Time `orm:"auto_now_add;type(datetime);column(created_at);type(timestamp)"`
	UpdatedAt time.Time `orm:"auto_now;type(datetime);column(updated_at);type(timestamp)"`
}

// 数据模型
type Model struct {
	BaseModel
	Name        string `orm:"column(Name);null" description:""`
    Parent       *Parent   `orm:"null;rel(fk)"`      // RelForeignKey relation
	Rmk          string    `orm:"column(rmk);size(255);null" description:""`
	DeletedAt    time.Time `form:"-" orm:"column(deleted_at);type(timestamp);null" `
}

type Parent struct {
	BaseModel
	Name        string `orm:"column(Name);null" description:""`
}

// 格式化数据
type Response struct {
	Id           int64
	ParentName   string `gtf:"Parent.Name"`
    Rmk          string
	DeletedAt    string
	CreatedAt    string
	UpdatedAt    string
}


One To More Relation Example

一对多关联关系格式化,使用 gtf 标识加Func.FormatTime(arg),参数为关联关系名称

// 基础数据模型  beego/orm 
type BaseModel struct {
	Id        int64
	CreatedAt time.Time `orm:"auto_now_add;type(datetime);column(created_at);type(timestamp)"`
	UpdatedAt time.Time `orm:"auto_now;type(datetime);column(updated_at);type(timestamp)"`
}

// 数据模型
type Model struct {
	BaseModel
	Name        string `orm:"column(Name);null" description:""`
    Parents      []*Parent   `orm:"null;rel(fk)"`      // RelForeignKey relation
	Rmk          string    `orm:"column(rmk);size(255);null" description:""`
	DeletedAt    time.Time `form:"-" orm:"column(deleted_at);type(timestamp);null" `
}

// 数据模型
type Parent struct {
	BaseModel
	Name        string `orm:"column(Name);null" description:""`
}

// 格式化数据
type Response struct {
	Id           int64
	ParentName   string `gtf:"Func.FormatTime(Parents)"`
    Rmk          string
	DeletedAt    string
	CreatedAt    string
	UpdatedAt    string
}

func (r *Response) GetAdminName(vs []*models.Parent) string {
	for _, v := range vs {
		//...
	}

	return ""
}

时间数据格式化

  • 根据数据模型类型 time.Time 自动格式化,
  • 默认使用 gotransform.NewTransform(&response, model, time.RFC3339) 定义的时间格式
  • 自定义时间格式 使用标识 gtf:"Time.2006-01-02 15:04:05"
// 基础数据模型  beego/orm 
type BaseModel struct {
	Id        int64
	CreatedAt time.Time `orm:"auto_now_add;type(datetime);column(created_at);type(timestamp)"`
	UpdatedAt time.Time `orm:"auto_now;type(datetime);column(updated_at);type(timestamp)"`
}

// 数据模型
type Model struct {
	BaseModel
	Time        time.Time `form:"-" orm:"column(Time);type(timestamp);null" `
	Time1       time.Tim   `form:"-" orm:"column(Time1);type(timestamp);null" `
	DeletedAt   time.Time `form:"-" orm:"column(deleted_at);type(timestamp);null" `
}

// 格式化数据
type Response struct {
	Id           int64
    Time         string `gtf:"Time.2006-01-02 15:04:05"`
    Time1        string 
	DeletedAt    string
	CreatedAt    string
	UpdatedAt    string
}

Func Example

Func Example

Map Example

Map Example

Excel 导入数据转换

Excel 导入数据转换

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Tag

type Tag struct {
	Key       string
	Value     string
	FiledName string
	Args      []string
}

type Transform

type Transform struct {
	OutputObj  interface{}
	InsertObj  interface{}
	TimeFormat string
}

func NewTransform

func NewTransform(outObj, inObj interface{}, timeFormat string) *Transform

func (*Transform) CallOutFunc

func (t *Transform) CallOutFunc(tag *Tag) reflect.Value

call out func

func (*Transform) GetInsertMapKeys

func (t *Transform) GetInsertMapKeys() []reflect.Value

输入 map类型数据的 keys

func (*Transform) GetInsertMapValue

func (t *Transform) GetInsertMapValue(key reflect.Value) reflect.Value

输入map类型数据的 key 对应数数据

func (*Transform) GetInsertValue

func (t *Transform) GetInsertValue() reflect.Value

输入数据的值

func (*Transform) GetInsertValueElem

func (t *Transform) GetInsertValueElem() reflect.Value

输入数据的值的成员

func (*Transform) GetInsertValueElemField

func (t *Transform) GetInsertValueElemField(i int) reflect.Value

输入数据的值的成员的值

func (*Transform) GetInsertValueElemType

func (t *Transform) GetInsertValueElemType() reflect.Type

输入数据的值的成员的类型

func (*Transform) GetInsertValueElemTypeField

func (t *Transform) GetInsertValueElemTypeField(i int) reflect.StructField

输入数据的值的成员类型的值

func (*Transform) GetInsertValueKind

func (t *Transform) GetInsertValueKind() reflect.Kind

输入数据的值类型

func (*Transform) GetOutputValue

func (t *Transform) GetOutputValue() reflect.Value

输出数据的值

func (*Transform) GetOutputValueElem

func (t *Transform) GetOutputValueElem() reflect.Value

输出数据的值的成员

func (*Transform) GetOutputValueElemField

func (t *Transform) GetOutputValueElemField(i int) reflect.Value

输出数据的值的成员的值

func (*Transform) GetOutputValueElemType

func (t *Transform) GetOutputValueElemType() reflect.Type

输出数据的值的成员类型

func (*Transform) GetOutputValueElemTypeField

func (t *Transform) GetOutputValueElemTypeField(i int) reflect.StructField

输出数据的值的成员类型的值

func (*Transform) GetOutputValueKind

func (t *Transform) GetOutputValueKind() reflect.Kind

输出数据的值类型

func (*Transform) Transformer

func (t *Transform) Transformer() error

type XlxsTransform

type XlxsTransform struct {
	OutputObj  interface{}
	Title      map[string]string
	Row        []string
	ExcelName  string
	File       *excelize.File
	TimeFormat string
}

func NewXlxsTransform

func NewXlxsTransform(outObj interface{}, title map[string]string, row []string, excelName, timeFormat string, file *excelize.File) *XlxsTransform

func (*XlxsTransform) GetExcelCell

func (t *XlxsTransform) GetExcelCell(axis string) (string, error)

导入基础参数 Cell 文件内容

func (*XlxsTransform) GetOutputValue

func (t *XlxsTransform) GetOutputValue() reflect.Value

func (*XlxsTransform) GetOutputValueElem

func (t *XlxsTransform) GetOutputValueElem() reflect.Value

func (*XlxsTransform) GetOutputValueElemField

func (t *XlxsTransform) GetOutputValueElemField(i int) reflect.Value

func (*XlxsTransform) GetOutputValueElemType

func (t *XlxsTransform) GetOutputValueElemType() reflect.Type

func (*XlxsTransform) GetOutputValueElemTypeField

func (t *XlxsTransform) GetOutputValueElemTypeField(i int) reflect.StructField

func (*XlxsTransform) GetOutputValueKind

func (t *XlxsTransform) GetOutputValueKind() reflect.Kind

func (*XlxsTransform) XlxsCellTransformer

func (t *XlxsTransform) XlxsCellTransformer() error

get excel cell data

func (*XlxsTransform) XlxsTransformer

func (t *XlxsTransform) XlxsTransformer() error

Jump to

Keyboard shortcuts

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