diff --git a/apier/v1/apier.go b/apier/v1/apier.go index 6171656e7..2f602fe8b 100644 --- a/apier/v1/apier.go +++ b/apier/v1/apier.go @@ -1961,6 +1961,43 @@ func (apierSv1 *APIerSv1) ExportToFolder(arg *utils.ArgExportToFolder, reply *st } } csvWriter.Flush() + case utils.MetaAccountProfiles: + prfx := utils.AccountProfilePrefix + keys, err := apierSv1.DataManager.DataDB().GetKeysForPrefix(prfx) + if err != nil { + return err + } + if len(keys) == 0 { + continue + } + f, err := os.Create(path.Join(arg.Path, utils.AccountProfilesCsv)) + if err != nil { + return err + } + defer f.Close() + + csvWriter := csv.NewWriter(f) + csvWriter.Comma = utils.CSVSep + //write the header of the file + if err := csvWriter.Write(engine.AccountProfileMdls{}.CSVHeader()); err != nil { + return err + } + for _, key := range keys { + tntID := strings.SplitN(key[len(prfx):], utils.InInFieldSep, 2) + accPrf, err := apierSv1.DataManager.GetAccountProfile(tntID[0], tntID[1], + true, false, utils.NonTransactional) + if err != nil { + return err + } + for _, model := range engine.APItoModelTPAccountProfile(engine.AccountProfileToAPI(accPrf)) { + if record, err := engine.CsvDump(model); err != nil { + return err + } else if err := csvWriter.Write(record); err != nil { + return err + } + } + } + csvWriter.Flush() }