bytelib.go
4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
package bytecore
import "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/domain"
type ByteLibService interface {
LoadDataTable(param ReqLoadDataTable) (*DataLoadDataTable, error)
EditTable(param ReqEditDataTable) (*DataEditDataTable, error)
SaveTable(param ReqSaveTable) (*DataSaveTable, error)
GenerateTable(ctx *domain.Context, param ReqGenerateTable) (*DataGenerateTable, error)
CopyTable(param ReqCopyTable) (*DataCopyTable, error)
AppendData(param ReqAppendData) (*DataAppendData, error)
DeleteTable(param ReqDeleteTable) (*DataDeleteTable, error)
CancelFile(param ReqCancelFile) (*DataCancelFile, error)
EditTableData(param ReqEditTableData) (*DataEditTableData, error)
}
type (
ReqLoadDataTable struct {
FileId int `json:"file_id"`
FileName string `json:"file_name"`
Url string `json:"url"`
Ext string `json:"ext"`
domain.Where
OriginalTableId string `json:"originalTableId"`
IsFromOriginalTable bool `json:"isFromOriginalTable"`
TableFileUrl string `json:"tableFileUrl"`
ColumnSchemas []ColumnSchema `json:"columnSchemas"`
//PageNumber int `json:"pageNumber"`
//PageSize int `json:"pageSize"`
QueryParameters map[string]interface{} `json:"queryParameters"`
SortParameters map[string]interface{} `json:"sortParameters"`
}
DataLoadDataTable struct {
FileId int `json:"objectId"`
ObjectType string `json:"objectType"`
TableType string `json:"tableType"`
Fields []*Field `json:"fields"`
Data [][]string `json:"data"`
Total int `json:"total"`
PageNumber int `json:"pageNumber"`
InValidCells []InValidCell `json:"inValidCells"`
}
Field struct {
// 索引序号
Index int `json:"index"`
// 名称
Name string `json:"name"`
// 对应数据库类型
Type string `json:"sqlType"`
}
InValidCell struct {
X int `json:"x"`
Y int `json:"y"`
Error string `json:"error"`
}
)
// https://github.com/go-gota/gota 类似pandas的数据处理包
// https://github.com/gonum/gonum
func (table DataLoadDataTable) Filter(where domain.Where) *DataLoadDataTable {
begin := (where.PageNumber - 1) * where.PageSize
if begin < 0 {
begin = 0
}
end := begin + where.PageSize
data := make([][]string, 0)
if begin < table.Total {
if end < table.Total {
data = table.Data[begin:end]
} else {
data = table.Data[begin:]
}
}
return &DataLoadDataTable{
FileId: table.FileId,
Fields: table.Fields,
Data: data,
Total: table.Total,
PageNumber: where.PageNumber,
InValidCells: make([]InValidCell, 0),
}
}
type (
ReqEditDataTable struct {
FileId int `json:"fileId"`
PageNumber int `json:"pageNumber"`
PageSize int `json:"pageSize"`
Fields []*Field `json:"fields"`
ProcessFields []*Field `json:"processFields"`
Action string `json:"action"`
Params map[string]interface{} `json:"params"`
}
DataEditDataTable struct {
DataLoadDataTable
}
)
type (
ReqSaveTable struct {
FileId int
}
DataSaveTable struct {
Url string `json:"url"`
}
)
type (
ReqGenerateTable struct {
FileId int
FileUrl string
Table *domain.Table
}
DataGenerateTable struct {
TableName string
}
)
type (
ReqCopyTable struct {
}
DataCopyTable struct {
}
)
type (
ReqAppendData struct {
}
DataAppendData struct {
}
)
type (
ReqDeleteTable struct {
}
DataDeleteTable struct {
}
)
type (
ReqCancelFile struct {
}
DataCancelFile struct {
}
)
type (
ReqEditTableData struct {
}
DataEditTableData struct {
}
)
type ColumnSchema struct {
ColumnName string `json:"columnName"`
ColumnType string `json:"columnType"`
}
func ToFields(fields []*domain.Field) []*Field {
result := make([]*Field, 0)
for _, f := range fields {
result = append(result, &Field{
Index: f.Index,
Name: f.Name,
Type: f.SQLType,
})
}
return result
}