summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--importexport.go11
-rw-r--r--interact.go90
-rw-r--r--sqlite.go9
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
diff --git a/sqlite.go b/sqlite.go
index d8dfbef..f7bea62 100644
--- a/sqlite.go
+++ b/sqlite.go
@@ -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))