79 lines
3.4 KiB
Go
79 lines
3.4 KiB
Go
package datatable
|
|
|
|
import (
|
|
"github.com/mayswind/ezbookkeeping/pkg/core"
|
|
"github.com/mayswind/ezbookkeeping/pkg/models"
|
|
)
|
|
|
|
// TransactionDataTable defines the structure of transaction data table
|
|
type TransactionDataTable interface {
|
|
// HasColumn returns whether the transaction data table has specified column
|
|
HasColumn(column TransactionDataTableColumn) bool
|
|
|
|
// TransactionRowCount returns the total count of transaction data row
|
|
TransactionRowCount() int
|
|
|
|
// TransactionRowIterator returns the iterator of transaction data row
|
|
TransactionRowIterator() TransactionDataRowIterator
|
|
}
|
|
|
|
// TransactionDataRow defines the structure of transaction data row
|
|
type TransactionDataRow interface {
|
|
// IsValid returns whether this row is valid data for importing
|
|
IsValid() bool
|
|
|
|
// GetData returns the data in the specified column type
|
|
GetData(column TransactionDataTableColumn) string
|
|
}
|
|
|
|
// TransactionDataRowIterator defines the structure of transaction data row iterator
|
|
type TransactionDataRowIterator interface {
|
|
// HasNext returns whether the iterator does not reach the end
|
|
HasNext() bool
|
|
|
|
// Next returns the next transaction data row
|
|
Next(ctx core.Context, user *models.User) (daraRow TransactionDataRow, err error)
|
|
}
|
|
|
|
// TransactionDataRowParser defines the structure of transaction data row parser
|
|
type TransactionDataRowParser interface {
|
|
// GetAddedColumns returns the added columns after converting the data row
|
|
GetAddedColumns() []TransactionDataTableColumn
|
|
|
|
// Parse returns the converted transaction data row
|
|
Parse(data map[TransactionDataTableColumn]string) (rowData map[TransactionDataTableColumn]string, rowDataValid bool, err error)
|
|
}
|
|
|
|
// TransactionDataTableBuilder defines the structure of data table builder
|
|
type TransactionDataTableBuilder interface {
|
|
// AppendTransaction appends the specified transaction to data builder
|
|
AppendTransaction(data map[TransactionDataTableColumn]string)
|
|
|
|
// ReplaceDelimiters returns the text after removing the delimiters
|
|
ReplaceDelimiters(text string) string
|
|
}
|
|
|
|
// TransactionDataTableColumn represents the data column type of data table
|
|
type TransactionDataTableColumn byte
|
|
|
|
// Transaction data table columns
|
|
const (
|
|
TRANSACTION_DATA_TABLE_TRANSACTION_TIME TransactionDataTableColumn = 1
|
|
TRANSACTION_DATA_TABLE_TRANSACTION_TIMEZONE TransactionDataTableColumn = 2
|
|
TRANSACTION_DATA_TABLE_TRANSACTION_TYPE TransactionDataTableColumn = 3
|
|
TRANSACTION_DATA_TABLE_CATEGORY TransactionDataTableColumn = 4
|
|
TRANSACTION_DATA_TABLE_SUB_CATEGORY TransactionDataTableColumn = 5
|
|
TRANSACTION_DATA_TABLE_ACCOUNT_NAME TransactionDataTableColumn = 6
|
|
TRANSACTION_DATA_TABLE_ACCOUNT_CURRENCY TransactionDataTableColumn = 7
|
|
TRANSACTION_DATA_TABLE_AMOUNT TransactionDataTableColumn = 8
|
|
TRANSACTION_DATA_TABLE_RELATED_ACCOUNT_NAME TransactionDataTableColumn = 9
|
|
TRANSACTION_DATA_TABLE_RELATED_ACCOUNT_CURRENCY TransactionDataTableColumn = 10
|
|
TRANSACTION_DATA_TABLE_RELATED_AMOUNT TransactionDataTableColumn = 11
|
|
TRANSACTION_DATA_TABLE_GEOGRAPHIC_LOCATION TransactionDataTableColumn = 12
|
|
TRANSACTION_DATA_TABLE_TAGS TransactionDataTableColumn = 13
|
|
TRANSACTION_DATA_TABLE_DESCRIPTION TransactionDataTableColumn = 14
|
|
)
|
|
|
|
// TRANSACTION_DATA_TABLE_TIMEZONE_NOT_AVAILABLE represents the constant for timezone not available
|
|
const TRANSACTION_DATA_TABLE_TIMEZONE_NOT_AVAILABLE = "TIMEZONE_NOT_AVAILABLE"
|