Commit ad632afd authored by Ajit Jagtap's avatar Ajit Jagtap
Browse files

Merge branch 'fix_fdb_export_index' into 'devbranch'

fix: exporting index files by filtering with queries

See merge request !156
parents 2074848e 8d9d2c6a
Branches
Tags
2 merge requests!159Mep release 060220,!156fix: exporting index files by filtering with queries
Showing with 32 additions and 3 deletions
......@@ -1894,6 +1894,30 @@ func LogFDBIndexFile(indexFilePath string, index *Index) error {
return filemdl.WriteFile(indexFilePath, dataByteToWriteRes, true, false)
}
// AddIndexEntriesInFile -AddIndexEntriesInFile
func AddIndexEntriesInFile(indexFilePath string, entries map[string]string) error {
// dbPath := filepath.Join(fdbPath, INDEXFOLDER)
// loggermdl.LogDebug("in log fdb index")
loggermdl.LogError("entries", entries)
dataToStore := ""
for key, val := range entries {
dataToStore = dataToStore + key + IndexKeyValSeperator + val + lineBreak
}
dataByteToWriteRes := []byte(dataToStore)
var hashError error
if len(dataByteToWriteRes) > 0 {
_, fileName := filepath.Split(indexFilePath)
dataByteToWriteRes, hashError = encryptData(dataByteToWriteRes, fileName)
if errormdl.CheckErr1(hashError) != nil {
return errormdl.CheckErr1(hashError)
}
}
// dataByteToWriteRes := []byte(dataToStore)
//creating
loggermdl.LogError("creating file indexfile", indexFilePath)
return filemdl.WriteFile(indexFilePath, dataByteToWriteRes, true, false)
}
// GetKeyWithFileNameAndDefaultKey generates key using file name + Default key
func GetKeyWithFileNameAndDefaultKey(filePath string) ([]byte, error) {
fileName := filepath.Base(filePath)
......@@ -1955,6 +1979,7 @@ func LoadFDBIndexFromFile(indexFilePath string, fdb *FDB, indexID string) error
// update index file by reading all data and updating index file
return index.indexObj.Update(func(tx *buntdb.Tx) error {
for key, val := range indexDataMap {
loggermdl.LogError(key, val)
_, _, err := tx.Set(key, val, nil)
if err != nil {
return err
......@@ -3122,19 +3147,22 @@ func copyFDBDataUsingIndex(fdb *FDB, indexID string, queries []string, destBaseP
timeStamp := time.Now().Nanosecond()
targetBasePath := filepath.Join(filemdl.TempDir, strconv.Itoa(timeStamp))
// loggermdl.LogDebug("targetBasePath", targetBasePath)
filteredKeyValMap := make(map[string]string, 0)
filepathsToExport := []string{}
err := index.indexObj.View(func(tx *buntdb.Tx) error {
return tx.Ascend(indexID, func(key, value string) bool {
return tx.Ascend("", func(key, value string) bool {
if len(queries) > 0 {
rsJSON := gjson.Parse("[" + value + "]")
for i := 0; i < len(queries); i++ {
rsJSON = rsJSON.Get(queries[i] + "#")
}
if rsJSON.Value() != nil && rsJSON.IsArray() && len(rsJSON.Array()) > 0 {
filteredKeyValMap[key] = value
filepathsToExport = append(filepathsToExport, key)
}
return true
}
filteredKeyValMap[key] = value
filepathsToExport = append(filepathsToExport, key)
return true
})
......@@ -3156,9 +3184,10 @@ func copyFDBDataUsingIndex(fdb *FDB, indexID string, queries []string, destBaseP
}
}
// copy index file
sourcePath = filepath.Join(fdb.DBPath, INDEXFOLDER, indexID)
// sourcePath = filepath.Join(fdb.DBPath, INDEXFOLDER, indexID)
// _, err = filemdl.CopyFile(sourcePath, targetPath, true)
targetPath := filepath.Join(targetBasePath, INDEXFOLDER, indexID)
_, err = filemdl.CopyFile(sourcePath, targetPath, true)
err = AddIndexEntriesInFile(targetPath, filteredKeyValMap)
if err != nil {
return err
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment