summaryrefslogtreecommitdiff
path: root/importexport.go
diff options
context:
space:
mode:
authorNikolaus Gotsche <n@softwarefools.com>2018-11-02 13:03:42 +0100
committerNikolaus Gotsche <n@softwarefools.com>2018-11-02 13:03:42 +0100
commit38cd567117fb2248a175f23cb8a736a988e3691c (patch)
treed9bba5d41b9c6126c5fa249b9175d1486d8d4ddd /importexport.go
parent2a50cbb5ffd3f4fbc088bd18598980e0f142d7b7 (diff)
Full working import/export with TARing of the files
Diffstat (limited to 'importexport.go')
-rw-r--r--importexport.go106
1 files changed, 90 insertions, 16 deletions
diff --git a/importexport.go b/importexport.go
index e1af448..5431506 100644
--- a/importexport.go
+++ b/importexport.go
@@ -2,16 +2,27 @@ package main
import (
"os"
+ "os/exec"
//"github.com/atotto/encoding/csv"
- //"io"
- _ "fmt"
+ "fmt"
"time"
"bufio"
"strconv"
"encoding/csv"
)
-func ExportTasks(in []Task,filename string) {
+const (
+ timeform string = "2006-01-02 15:04"
+ taskfile string = "/tmp/laboravi.export.tasks"
+ custfile string = "/tmp/laboravi.export.customers"
+ projfile string = "/tmp/laboravi.export.projects"
+ //taskfile string = "laboravi.export.tasks"
+ //custfile string = "laboravi.export.customers"
+ //projfile string = "laboravi.export.projects"
+)
+
+func ExportTasks(in []Task) {
+ filename := taskfile
file ,err := os.Create(filename)
checkErr(err)
defer file.Close()
@@ -19,13 +30,15 @@ func ExportTasks(in []Task,filename string) {
w := csv.NewWriter(file)
defer w.Flush()
for _,i := range in {
- str := []string{Sint(i.Id),Sint(i.Projectid),i.Start.Format(time.RFC3339),i.Stop.Format(time.RFC3339),i.Taskname,i.Comment,Sint(i.Checkout)}
+ //str := []string{Sint(i.Id),Sint(i.Projectid),i.Start.Format(time.RFC3339),i.Stop.Format(time.RFC3339),i.Taskname,i.Comment,Sint(i.Checkout)}
+ str := []string{Sint(i.Id),Sint(i.Projectid),i.Start.Format(timeform),i.Stop.Format(timeform),i.Taskname,i.Comment,Sint(i.Checkout)}
w.Write(str)
//w.WriteStruct(i)
}
}
-func ExportProjects(in []Project,filename string) {
+func ExportProjects(in []Project) {
+ filename := projfile
file ,err := os.Create(filename)
checkErr(err)
defer file.Close()
@@ -33,14 +46,16 @@ func ExportProjects(in []Project,filename string) {
w := csv.NewWriter(file)
defer w.Flush()
for _,i := range in {
- str := []string{Sint(i.Id),i.Name,i.Comment,i.First.Format(time.RFC3339),i.Last.Format(time.RFC3339),Sint(i.Finished),Sint(i.Customer)}
+ //str := []string{Sint(i.Id),i.Name,i.Comment,i.First.Format(time.RFC3339),i.Last.Format(time.RFC3339),Sint(i.Finished),Sint(i.Customer)}
+ str := []string{Sint(i.Id),i.Name,i.Comment,i.First.Format(timeform),i.Last.Format(timeform),Sint(i.Finished),Sint(i.Customer)}
w.Write(str)
//w.Write([]string{" Fuck","Master","Flash"})
//w.WriteStruct(i)
}
}
-func ExportCustomers(in []Customer,filename string) {
+func ExportCustomers(in []Customer) {
+ filename := custfile
file ,err := os.Create(filename)
checkErr(err)
defer file.Close()
@@ -48,14 +63,17 @@ func ExportCustomers(in []Customer,filename string) {
w := csv.NewWriter(file)
defer w.Flush()
for _,i := range in {
- str := []string{Sint(i.Id),i.Company,i.Name,i.Address,Sflo(i.Satz),i.Lastbill.Format(time.RFC3339)}
+ //str := []string{Sint(i.Id),i.Company,i.Name,i.Address,Sflo(i.Satz),i.Lastbill.Format(time.RFC3339)}
+ str := []string{Sint(i.Id),i.Company,i.Name,i.Address,Sflo(i.Satz),i.Lastbill.Format(timeform)}
w.Write(str)
//w.WriteStruct(i)
}
}
// Import an array of Tasks from a csv of given filename
-func ImportTasks(filename string) ([]Task) {
+func ImportTasks() ([]Task) {
+ filename := taskfile
+ //file ,err := os.Create(filename)
var tsk []Task
//w := NewReader(strings.NewReader())
f, _ := os.Open(filename)
@@ -72,9 +90,9 @@ func ImportTasks(filename string) ([]Task) {
checkErr(err)
pr, err := strconv.Atoi(line[1])
checkErr(err)
- sta,err := time.Parse(time.RFC3339,line[2])
+ sta,err := time.Parse(timeform,line[2])
checkErr(err)
- sto,err := time.Parse(time.RFC3339,line[3])
+ sto,err := time.Parse(timeform,line[3])
checkErr(err)
ch, err := strconv.Atoi(line[6])
checkErr(err)
@@ -94,7 +112,9 @@ func ImportTasks(filename string) ([]Task) {
}
// Import an array of Customers from a csv of given filename
-func ImportCustomers(filename string) ([]Customer) {
+func ImportCustomers() ([]Customer) {
+ filename := custfile
+ //file ,err := os.Create(filename)
var cust []Customer
//w := NewReader(strings.NewReader())
f, _ := os.Open(filename)
@@ -111,7 +131,7 @@ func ImportCustomers(filename string) ([]Customer) {
checkErr(err)
sat,err := strconv.ParseFloat(line[4],64)
checkErr(err)
- tim,err := time.Parse(time.RFC3339,line[5])
+ tim,err := time.Parse(timeform,line[5])
checkErr(err)
data := Customer{
Id: id,
@@ -127,7 +147,9 @@ func ImportCustomers(filename string) ([]Customer) {
}
// Import an array of Projects from a csv of given filename
-func ImportProjects(filename string) (prjs []Project) {
+func ImportProjects() (prjs []Project) {
+ filename := projfile
+ //file ,err := os.Create(filename)
//w := NewReader(strings.NewReader())
f, _ := os.Open(filename)
@@ -141,9 +163,9 @@ func ImportProjects(filename string) (prjs []Project) {
for _, line := range lines {
id, err := strconv.Atoi(line[0])
checkErr(err)
- fir,err := time.Parse(time.RFC3339,line[3])
+ fir,err := time.Parse(timeform,line[3])
checkErr(err)
- las,err := time.Parse(time.RFC3339,line[4])
+ las,err := time.Parse(timeform,line[4])
checkErr(err)
fin,err := strconv.Atoi(line[5])
checkErr(err)
@@ -162,3 +184,55 @@ func ImportProjects(filename string) (prjs []Project) {
}
return
}
+
+func TarExports(filename string) {
+ var (
+ cmdOut []byte
+ err error
+ )
+ cmd := "tar"
+ fln := fmt.Sprintf("/tmp/%s",filename)
+ //args := []string{"-cf",filename,"/tmp/laboravi.export.tasks","/tmp/laboravi.export.customers","/tmp/laboravi.export.projects"}
+ args := []string{"-cf",fln,taskfile,projfile,custfile}
+ if cmdOut, err = exec.Command(cmd, args...).Output(); err != nil {
+ //panic(err)
+ }
+ _ = cmdOut
+ cmd = "mv"
+ args = []string{fln,"."}
+ if cmdOut, err = exec.Command(cmd, args...).Output(); err != nil {
+ //panic(err)
+ }
+ _ = cmdOut
+}
+
+func UnTarExports(filename string) {
+ var (
+ cmdOut []byte
+ 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)
+ }
+ _ = cmdOut
+}
+
+func PurgeTemps() {
+ var (
+ cmdOut []byte
+ err error
+ )
+ cmd := "rm"
+ //args := []string{"/tmp/laboravi.export.tasks","/tmp/laboravi.export.customers","/tmp/laboravi.export.projects"}
+ args := []string{taskfile,projfile,custfile}
+ //args := []string{"/tmp/laboravi.export.*"}
+ if cmdOut, err = exec.Command(cmd, args...).Output(); err != nil {
+ //panic(err)
+ }
+ _ = cmdOut
+}
+