support data export

This commit is contained in:
MaysWind
2021-01-02 02:04:38 +08:00
parent 102c945aa0
commit 7d3e05c548
24 changed files with 515 additions and 42 deletions
+11
View File
@@ -321,3 +321,14 @@ func (s *AccountService) DeleteAccount(uid int64, accountId int64) error {
return err
})
}
// GetAccountMapByList returns an account map by a list
func (s *AccountService) GetAccountMapByList(accounts []*models.Account) map[int64]*models.Account {
accountMap := make(map[int64]*models.Account)
for i := 0; i < len(accounts); i++ {
account := accounts[i]
accountMap[account.AccountId] = account
}
return accountMap
}
+11
View File
@@ -315,3 +315,14 @@ func (s *TransactionCategoryService) DeleteCategory(uid int64, categoryId int64)
return err
})
}
// GetCategoryMapByList returns a transaction category map by a list
func (s *TransactionCategoryService) GetCategoryMapByList(categories []*models.TransactionCategory) map[int64]*models.TransactionCategory {
categoryMap := make(map[int64]*models.TransactionCategory)
for i := 0; i < len(categories); i++ {
category := categories[i]
categoryMap[category.CategoryId] = category
}
return categoryMap
}
+44 -14
View File
@@ -83,6 +83,20 @@ func (s *TransactionTagService) GetMaxDisplayOrder(uid int64) (int, error) {
}
}
// GetAllTagIdsOfAllTransactions returns all transaction tag ids
func (s *TransactionTagService) GetAllTagIdsOfAllTransactions(uid int64) (map[int64][]int64, error) {
if uid <= 0 {
return nil, errs.ErrUserIdInvalid
}
var tagIndexs []*models.TransactionTagIndex
err := s.UserDataDB(uid).Where("uid=?", uid).Find(&tagIndexs)
allTransactionTagIds := s.getGroupedTransactionTagIds(tagIndexs)
return allTransactionTagIds, err
}
// GetAllTagIdsOfTransactions returns transaction tag ids for given transactions
func (s *TransactionTagService) GetAllTagIdsOfTransactions(uid int64, transactionIds []int64) (map[int64][]int64, error) {
if uid <= 0 {
@@ -92,20 +106,7 @@ func (s *TransactionTagService) GetAllTagIdsOfTransactions(uid int64, transactio
var tagIndexs []*models.TransactionTagIndex
err := s.UserDataDB(uid).Where("uid=?", uid).In("transaction_id", transactionIds).Find(&tagIndexs)
allTransactionTagIds := make(map[int64][]int64)
for i := 0; i < len(tagIndexs); i++ {
tagIndex := tagIndexs[i]
var transactionTagIds []int64
if _, exists := allTransactionTagIds[tagIndex.TransactionId]; exists {
transactionTagIds = allTransactionTagIds[tagIndex.TransactionId]
}
transactionTagIds = append(transactionTagIds, tagIndex.TagId)
allTransactionTagIds[tagIndex.TransactionId] = transactionTagIds
}
allTransactionTagIds := s.getGroupedTransactionTagIds(tagIndexs)
return allTransactionTagIds, err
}
@@ -251,3 +252,32 @@ func (s *TransactionTagService) ExistsTagName(uid int64, name string) (bool, err
return s.UserDB().Cols("name").Where("uid=? AND name=?", uid, name).Exist(&models.TransactionTag{})
}
// GetTagMapByList returns a transaction tag map by a list
func (s *TransactionTagService) GetTagMapByList(tags []*models.TransactionTag) map[int64]*models.TransactionTag {
tagMap := make(map[int64]*models.TransactionTag)
for i := 0; i < len(tags); i++ {
tag := tags[i]
tagMap[tag.TagId] = tag
}
return tagMap
}
func (s *TransactionTagService) getGroupedTransactionTagIds(tagIndexs []*models.TransactionTagIndex) map[int64][]int64 {
allTransactionTagIds := make(map[int64][]int64)
for i := 0; i < len(tagIndexs); i++ {
tagIndex := tagIndexs[i]
var transactionTagIds []int64
if _, exists := allTransactionTagIds[tagIndex.TransactionId]; exists {
transactionTagIds = allTransactionTagIds[tagIndex.TransactionId]
}
transactionTagIds = append(transactionTagIds, tagIndex.TagId)
allTransactionTagIds[tagIndex.TransactionId] = transactionTagIds
}
return allTransactionTagIds
}