code refactor

This commit is contained in:
MaysWind
2024-09-11 01:08:43 +08:00
parent 2cffd4fbbb
commit 1307d49762
4 changed files with 81 additions and 80 deletions
+19 -25
View File
@@ -20,16 +20,14 @@ const pageCountForDataExport = 1000
// DataManagementsApi represents data management api // DataManagementsApi represents data management api
type DataManagementsApi struct { type DataManagementsApi struct {
ApiUsingConfig ApiUsingConfig
ezBookKeepingCsvConverter converters.TransactionDataConverter tokens *services.TokenService
ezBookKeepingTsvConverter converters.TransactionDataConverter users *services.UserService
tokens *services.TokenService accounts *services.AccountService
users *services.UserService transactions *services.TransactionService
accounts *services.AccountService categories *services.TransactionCategoryService
transactions *services.TransactionService tags *services.TransactionTagService
categories *services.TransactionCategoryService pictures *services.TransactionPictureService
tags *services.TransactionTagService templates *services.TransactionTemplateService
pictures *services.TransactionPictureService
templates *services.TransactionTemplateService
} }
// Initialize a data management api singleton instance // Initialize a data management api singleton instance
@@ -38,16 +36,14 @@ var (
ApiUsingConfig: ApiUsingConfig{ ApiUsingConfig: ApiUsingConfig{
container: settings.Container, container: settings.Container,
}, },
ezBookKeepingCsvConverter: converters.EzBookKeepingTransactionDataCSVFileConverter, tokens: services.Tokens,
ezBookKeepingTsvConverter: converters.EzBookKeepingTransactionDataTSVFileConverter, users: services.Users,
tokens: services.Tokens, accounts: services.Accounts,
users: services.Users, transactions: services.Transactions,
accounts: services.Accounts, categories: services.TransactionCategories,
transactions: services.Transactions, tags: services.TransactionTags,
categories: services.TransactionCategories, pictures: services.TransactionPictures,
tags: services.TransactionTags, templates: services.TransactionTemplates,
pictures: services.TransactionPictures,
templates: services.TransactionTemplates,
} }
) )
@@ -247,12 +243,10 @@ func (a *DataManagementsApi) getExportedFileContent(c *core.WebContext, fileType
return nil, "", errs.ErrOperationFailed return nil, "", errs.ErrOperationFailed
} }
var dataExporter converters.TransactionDataExporter dataExporter := converters.GetTransactionDataExporter(fileType)
if fileType == "tsv" { if dataExporter == nil {
dataExporter = a.ezBookKeepingTsvConverter return nil, "", errs.ErrNotImplemented
} else {
dataExporter = a.ezBookKeepingCsvConverter
} }
result, err := dataExporter.ToExportedContent(c, uid, allTransactions, accountMap, categoryMap, tagMap, tagIndexes) result, err := dataExporter.ToExportedContent(c, uid, allTransactions, accountMap, categoryMap, tagMap, tagIndexes)
+15 -23
View File
@@ -25,14 +25,12 @@ const maximumPicturesCountOfTransaction = 10
type TransactionsApi struct { type TransactionsApi struct {
ApiUsingConfig ApiUsingConfig
ApiUsingDuplicateChecker ApiUsingDuplicateChecker
ezBookKeepingCsvConverter converters.TransactionDataConverter transactions *services.TransactionService
ezBookKeepingTsvConverter converters.TransactionDataConverter transactionCategories *services.TransactionCategoryService
transactions *services.TransactionService transactionTags *services.TransactionTagService
transactionCategories *services.TransactionCategoryService transactionPictures *services.TransactionPictureService
transactionTags *services.TransactionTagService accounts *services.AccountService
transactionPictures *services.TransactionPictureService users *services.UserService
accounts *services.AccountService
users *services.UserService
} }
// Initialize a transaction api singleton instance // Initialize a transaction api singleton instance
@@ -44,14 +42,12 @@ var (
ApiUsingDuplicateChecker: ApiUsingDuplicateChecker{ ApiUsingDuplicateChecker: ApiUsingDuplicateChecker{
container: duplicatechecker.Container, container: duplicatechecker.Container,
}, },
ezBookKeepingCsvConverter: converters.EzBookKeepingTransactionDataCSVFileConverter, transactions: services.Transactions,
ezBookKeepingTsvConverter: converters.EzBookKeepingTransactionDataTSVFileConverter, transactionCategories: services.TransactionCategories,
transactions: services.Transactions, transactionTags: services.TransactionTags,
transactionCategories: services.TransactionCategories, transactionPictures: services.TransactionPictures,
transactionTags: services.TransactionTags, accounts: services.Accounts,
transactionPictures: services.TransactionPictures, users: services.Users,
accounts: services.Accounts,
users: services.Users,
} }
) )
@@ -1034,14 +1030,10 @@ func (a *TransactionsApi) TransactionParseImportFileHandler(c *core.WebContext)
} }
fileType := fileTypes[0] fileType := fileTypes[0]
var dataImporter converters.TransactionDataImporter dataImporter, err := converters.GetTransactionDataImporter(fileType)
if fileType == "ezbookkeeping_csv" { if err != nil {
dataImporter = a.ezBookKeepingCsvConverter return nil, errs.Or(err, errs.ErrImportFileTypeNotSupported)
} else if fileType == "ezbookkeeping_tsv" {
dataImporter = a.ezBookKeepingTsvConverter
} else {
return nil, errs.ErrImportFileTypeNotSupported
} }
importFiles := form.File["file"] importFiles := form.File["file"]
+22 -32
View File
@@ -21,16 +21,14 @@ const pageCountForDataExport = 1000
// UserDataCli represents user data cli // UserDataCli represents user data cli
type UserDataCli struct { type UserDataCli struct {
CliUsingConfig CliUsingConfig
ezBookKeepingCsvConverter converters.TransactionDataConverter accounts *services.AccountService
ezBookKeepingTsvConverter converters.TransactionDataConverter transactions *services.TransactionService
accounts *services.AccountService categories *services.TransactionCategoryService
transactions *services.TransactionService tags *services.TransactionTagService
categories *services.TransactionCategoryService users *services.UserService
tags *services.TransactionTagService twoFactorAuthorizations *services.TwoFactorAuthorizationService
users *services.UserService tokens *services.TokenService
twoFactorAuthorizations *services.TwoFactorAuthorizationService forgetPasswords *services.ForgetPasswordService
tokens *services.TokenService
forgetPasswords *services.ForgetPasswordService
} }
// Initialize an user data cli singleton instance // Initialize an user data cli singleton instance
@@ -39,16 +37,14 @@ var (
CliUsingConfig: CliUsingConfig{ CliUsingConfig: CliUsingConfig{
container: settings.Container, container: settings.Container,
}, },
ezBookKeepingCsvConverter: converters.EzBookKeepingTransactionDataCSVFileConverter, accounts: services.Accounts,
ezBookKeepingTsvConverter: converters.EzBookKeepingTransactionDataTSVFileConverter, transactions: services.Transactions,
accounts: services.Accounts, categories: services.TransactionCategories,
transactions: services.Transactions, tags: services.TransactionTags,
categories: services.TransactionCategories, users: services.Users,
tags: services.TransactionTags, twoFactorAuthorizations: services.TwoFactorAuthorizations,
users: services.Users, tokens: services.Tokens,
twoFactorAuthorizations: services.TwoFactorAuthorizations, forgetPasswords: services.ForgetPasswords,
tokens: services.Tokens,
forgetPasswords: services.ForgetPasswords,
} }
) )
@@ -646,12 +642,10 @@ func (l *UserDataCli) ExportTransaction(c *core.CliContext, username string, fil
return nil, err return nil, err
} }
var dataExporter converters.TransactionDataExporter dataExporter := converters.GetTransactionDataExporter(fileType)
if fileType == "tsv" { if dataExporter == nil {
dataExporter = l.ezBookKeepingTsvConverter return nil, errs.ErrNotImplemented
} else {
dataExporter = l.ezBookKeepingCsvConverter
} }
result, err := dataExporter.ToExportedContent(c, uid, allTransactions, accountMap, categoryMap, tagMap, tagIndexesMap) result, err := dataExporter.ToExportedContent(c, uid, allTransactions, accountMap, categoryMap, tagMap, tagIndexesMap)
@@ -670,14 +664,10 @@ func (l *UserDataCli) ImportTransaction(c *core.CliContext, username string, fil
return errs.ErrUsernameIsEmpty return errs.ErrUsernameIsEmpty
} }
var dataImporter converters.TransactionDataImporter dataImporter, err := converters.GetTransactionDataImporter(fileType)
if fileType == "ezbookkeeping_csv" { if err != nil {
dataImporter = l.ezBookKeepingCsvConverter return err
} else if fileType == "ezbookkeeping_tsv" {
dataImporter = l.ezBookKeepingTsvConverter
} else {
return errs.ErrImportFileTypeNotSupported
} }
user, err := l.GetUserByUsername(c, username) user, err := l.GetUserByUsername(c, username)
@@ -0,0 +1,25 @@
package converters
import "github.com/mayswind/ezbookkeeping/pkg/errs"
// GetTransactionDataExporter returns the transaction data exporter according to the file type
func GetTransactionDataExporter(fileType string) TransactionDataExporter {
if fileType == "csv" {
return EzBookKeepingTransactionDataCSVFileConverter
} else if fileType == "tsv" {
return EzBookKeepingTransactionDataTSVFileConverter
} else {
return nil
}
}
// GetTransactionDataImporter returns the transaction data importer according to the file type
func GetTransactionDataImporter(fileType string) (TransactionDataImporter, error) {
if fileType == "ezbookkeeping_csv" {
return EzBookKeepingTransactionDataCSVFileConverter, nil
} else if fileType == "ezbookkeeping_tsv" {
return EzBookKeepingTransactionDataTSVFileConverter, nil
} else {
return nil, errs.ErrImportFileTypeNotSupported
}
}