aboutsummaryrefslogblamecommitdiffstats
path: root/pkg/datamaps/writer.go
blob: 55b333b233a0292199ca83c2b792d2669e2018f5 (plain) (tree)


















                                                                                                                



                                                                                                      




















                                                                                                          
package datamaps

import (
	"log"
	"path/filepath"

	"github.com/tealeg/xlsx/v3"
)

func ExportMaster(opts *Options) error {
	// A master represents a set of file data from the database. Actually, in terms of the database,
	// it should represent a "return".
	//
	// The meat of the master is of the format:
	//		Key	1 | Key_1_Value_for_FD_1 | Key_1_Value_for_FD_2 | Key_1_Value_for_FD_3 | ... etc
	//		Key 2 | Key_2_Value_for_FD_1 | Key_2_Value_for_FD_2 | Key_2_Value_for_FD_3 | ... etc
	//		Key 3 | Key_3_Value_for_FD_1 | Key_3_Value_for_FD_2 | Key_3_Value_for_FD_3 | ... etc
	//		...
	// Could be represented as a slice or a map[string][]string
	// SQL statement:
	//		SELECT datamap_line.key , return_data.value, return_data.filename
	//		FROM return_data INNER JOIN datamap_line on return_data.dml_id=datamap_line.id
	//		WHERE "key";

	// filename := filepath.Join(opts.MasterOutPutPath, "master.xlsx")
	wb := xlsx.NewFile()
	sh, err := wb.AddSheet("Master Data")

	testRow, err := sh.Row(1)
	if err != nil {
		log.Fatal(err)
	}
	if sl := testRow.WriteSlice([]string{"Hello", "Bollocks", "Knackers", "Bottyies"}, -1); sl == -1 {
		log.Printf("not a slice type")
	}
	log.Printf("writing slice to row\n")

	log.Printf("saving master at %s", opts.MasterOutPutPath)
	if err := wb.Save(filepath.Join(opts.MasterOutPutPath, "master.xlsx")); err != nil {
		log.Fatalf("cannot save file to %s", opts.MasterOutPutPath)
	}
	sh.Close()
	return nil
}