diff options
| -rw-r--r-- | importexport.go | 11 | ||||
| -rw-r--r-- | interact.go | 90 | ||||
| -rw-r--r-- | sqlite.go | 9 |
3 files changed, 75 insertions, 35 deletions
diff --git a/importexport.go b/importexport.go index 5431506..92d028e 100644 --- a/importexport.go +++ b/importexport.go @@ -206,19 +206,24 @@ func TarExports(filename string) { _ = cmdOut } -func UnTarExports(filename string) { +func UnTarExports(filename string) (err error){ + _, err = os.Open(filename) + if err != nil { + return + } var ( cmdOut []byte - err error + //err error ) cmd := "tar" //args := []string{"-xf",filename,"/tmp/laboravi.export.tasks","/tmp/laboravi.export.customers","/tmp/laboravi.export.projects"} //args := []string{"-xf",filename,taskfile,projfile,custfile} args := []string{"-xf",filename,"-C","/"} if cmdOut, err = exec.Command(cmd, args...).Output(); err != nil { - //panic(err) + return } _ = cmdOut + return } func PurgeTemps() { diff --git a/interact.go b/interact.go index 0b1ec67..392af16 100644 --- a/interact.go +++ b/interact.go @@ -380,7 +380,7 @@ func interact(fulldb bool) { }) shell.AddCmd(startcmd) } - + // STOP Command group { stopcmd := &ishell.Cmd{ Name: "stop", @@ -417,7 +417,7 @@ func interact(fulldb bool) { }) shell.AddCmd(stopcmd) } - + // SHOW commands { showcmd := &ishell.Cmd{ Name: "show", @@ -547,58 +547,88 @@ func interact(fulldb bool) { //getInterAutoInput("Really?",autostuff) }, }) - testcmd.AddCmd(&ishell.Cmd{ + shell.AddCmd(testcmd) + } + // DATA commands + { + datacmd := &ishell.Cmd{ + Name: "data", + Help: "import/export", + LongHelp: ` Usage: data <command>`, + } + datacmd.AddCmd(&ishell.Cmd{ Name: "export", - Help: "Test export", - LongHelp: ` Usage: export - Test Export`, + Help: "export data from db", + LongHelp: ` Usage: data export + Export data from customers, projects and all closed tasks + as csv files and tar them together`, Func: func(c *ishell.Context) { - //multichoice("Geh scheissn") - //nm,st := GetTaskSums(currproject.Id) - //i := Multichoice("Sicha?",st) - //fmt.Println(nm[i]) prid := GetProjectIds() cuid := GetCustomerIds() taid := GetTaskIds() prs := GetSelectedProjects(prid) cus := GetSelectedCustomers(cuid) tas := GetSelectedTasks(taid) - c.Println("Tasks:",len(tas)) - c.Println("Projects:",len(prs)) - c.Println("Customers:",len(cus)) + c.Println(frame(boldGreen("Export DB Data"),true)) + c.Println(nli+"Customers:",len(cus)) + c.Println(nli+" Projects:",len(prs)) + c.Println(nli+" Tasks:",len(tas)) //c.Println("Customers:",cus) - if isInterSure("Export ?"){ + if isInterSure(sli+"Export this data?"){ + filen := getNewInterInput("Filename: ","export.tar",nli) ExportCustomers(cus) ExportProjects(prs) ExportTasks(tas) - TarExports("exports.tar") + TarExports(filen) PurgeTemps() + c.Println(nli+"Data exported to",filen) + c.Println(frame(posR(),false)) + }else{ + c.Println(frame(negR(),false)) } }, }) - testcmd.AddCmd(&ishell.Cmd{ + datacmd.AddCmd(&ishell.Cmd{ Name: "import", - Help: "Test import", - LongHelp: ` Usage: import - Test Import functions`, + Help: "import data into db", + LongHelp: ` Usage: data import + takes a tarball of csv data and imports it into the DB`, Func: func(c *ishell.Context) { //autostuff = append(autostuff,"scheissdreck") - if isInterSure("Import ?"){ - UnTarExports("exports.tar") - icus := ImportCustomers() - itas := ImportTasks() - iprs := ImportProjects() - PurgeTemps() - c.Println("Imported Customers:",len(icus)) - c.Println("Imported Projects:",len(iprs)) - c.Println("Imported Tasks:",len(itas)) - SaveImportsToDB(icus,iprs,itas) + c.Println(frame(boldGreen("Import Data into DB"),true)) + filen := getNewInterInput("Filename: ","export.tar",nli) + err := UnTarExports(filen) + if err != nil { + c.Println(boldRed(err)) + c.Println(frame(negR(),false)) + return + }else{ + c.Println(nli,boldGreen("File Loaded")) + c.Println(frame(posR(),false)) + } + icus := ImportCustomers() + itas := ImportTasks() + iprs := ImportProjects() + PurgeTemps() + //c.Println(sli,"Loaded Data") + //c.Println(nli,"Customers:",len(icus)) + //c.Println(nli," Projects:",len(iprs)) + //c.Println(nli," Tasks:",len(itas)) + //if isInterSure(sli+"Import this into DB?"){ + SaveImportsToDB(icus,iprs,itas) + //c.Println(boldGreen("Import Successful")) + //c.Println(frame(posR(),false)) + + //}else{ + // c.Println(boldRed("Nothing Imported")) + // c.Println(frame(negR(),false)) + //} }, //c.Println("Projects:",iprs) }) - shell.AddCmd(testcmd) + shell.AddCmd(datacmd) } // Config Commands @@ -495,21 +495,26 @@ func SaveImportsToDB(cus []Customer, prs []Project, tsk []Task) { fmt.Println(nli," Tasks:",len(tsk)) fmt.Println(sub("")) if isInterSure(nli+" Are You sure to Import them all?") { + i := 0 for _,c := range cus { id := SaveCustomer(c) cusids=append(cusids,IdMap{c.Id,id}) + i++ } - fmt.Println(cusids) + //fmt.Println(cusids) prs = ChangeCustomerIds(cusids,prs) for _,p := range prs { id := SaveProject(p) prids=append(prids,IdMap{p.Id,id}) + i++ } - fmt.Println(prids) + //fmt.Println(prids) tsk = ChangeProjectIds(prids,tsk) for _,t := range tsk { SaveTask(t) + i++ } + fmt.Println(nli,i,"items imported") fmt.Println(frame(posR(),false)) }else{ fmt.Println(frame(negR(),false)) |
