diff options
| author | Nikolaus Gotsche <n@softwarefools.com> | 2018-01-20 01:41:13 +0100 |
|---|---|---|
| committer | Nikolaus Gotsche <n@softwarefools.com> | 2018-01-20 01:41:13 +0100 |
| commit | 3602ac7b25083dc7d2a8d1b3c80487c004f7f750 (patch) | |
| tree | 92b46eef26344640a2830ea0595c9554e52b79aa /sqlite.go | |
| parent | 4c1961ce7a2bf9e5526d906ba2c317b53ed5f331 (diff) | |
Starttime - Finally
Diffstat (limited to 'sqlite.go')
| -rw-r--r-- | sqlite.go | 130 |
1 files changed, 106 insertions, 24 deletions
@@ -5,6 +5,9 @@ import ( "fmt" "time" "os" + "bufio" + "strings" + "regexp" _ "github.com/mattn/go-sqlite3" ) @@ -59,18 +62,62 @@ func initDB(filename string) { } } -func newTask(proj int ,task string) { - stmt, err := db.Prepare("INSERT INTO timetable(project, task, checkout) values(?, ?, ?)") - checkErr(err) - if (proj == 0) { - _, err = stmt.Exec(currproject.id,task,0) - }else{ - _, err = stmt.Exec(proj,task,0) +func newTaskTime(proj int, tim string) { + if (opentask.id == 0) { + timstr := "1791-09-30 19:07" + if isDate(tim) { + timstr = getDate(tim) + }else if isTime(tim) { + currdate := time.Now().UTC().Format("2006-01-02") + timstr = currdate+" "+getTime(tim) + }else { + fmt.Println(tim,"is Not a Valid Timestring! use: 'YYYY-MM-DD HH:MM' or 'HH:MM'") + os.Exit(0) + } + stmt, err := db.Prepare("INSERT INTO timetable(project, start, task, checkout) values(?, datetime(?,'utc'), ?, ?)") + fmt.Println(timstr) + task := getInput("Specify Task: ") + //stmt, err := db.Prepare("INSERT INTO timetable(project, start, task, checkout) values(?, datetime(?,'localtime'), ?, ?)") + checkErr(err) + if (proj == 0) { + _, err = stmt.Exec(currproject.id,timstr,task,0) + }else{ + _, err = stmt.Exec(proj,timstr,task,0) + } + checkErr(err) + //stmt, err = db.Prepare("UPDATE timetable SET start = datetime('?') WHERE id = ?") + //checkErr(err) + //_, err = stmt.Exec(opentask.id) + //checkErr(err) + + fmt.Println("...new task inserted into",currproject.name,": ",task) + getOpenTask() + updateProject(currproject.id) + } else { + fmt.Println("Another Task is already Open") + showOpenTask() + } + +} + +func newTask(proj int) { + if (opentask.id == 0) { + task := getInput("Specify Task: ") + stmt, err := db.Prepare("INSERT INTO timetable(project, task, checkout) values(?, ?, ?)") + checkErr(err) + if (proj == 0) { + _, err = stmt.Exec(currproject.id,task,0) + }else{ + _, err = stmt.Exec(proj,task,0) + } + checkErr(err) + fmt.Println("...New Task inserted into",currproject.name,": ",task) + getOpenTask() + updateProject(currproject.id) + } else { + fmt.Println("Another Task is already Open") + showOpenTask() } - checkErr(err) - fmt.Println("...New Task inserted into",currproject.name,": ",task) - getOpenTask() - updateProject(currproject.id) } func closeTask() { @@ -116,7 +163,7 @@ func showOpenTask() { fmt.Println("___No Open Tasks____________") } else { fmt.Println("___Open Task________________") - fmt.Println(opentask.id,":", opentask.taskname, opentask.projectid, opentask.start.Local().Format("Mon Jan _2 15:04")) + fmt.Println(opentask.id,":", opentask.taskname,"pr:", opentask.projectid,"-", opentask.start.Local().Format("Mon Jan _2 2006 15:04")) } } @@ -125,25 +172,30 @@ func showLastProject() { fmt.Println("Empty DB") } else { fmt.Println("___Last Project_____________") - fmt.Println(currproject.id,":", currproject.name, currproject.last.Local().Format("Mon Jan _2 15:04 2006")) + fmt.Println(currproject.id,":", currproject.name, currproject.last.Local().Format("2006 Mon Jan _2 15:04 2006")) } } -func newProject(nam string) { - stmt, err := db.Prepare("INSERT INTO projects(name, finished) values(?, ?)") - - checkErr(err) - _, err = stmt.Exec(nam,0) - checkErr(err) - fmt.Println(" Project Created:",nam) - getLastProject() +func newProject() { + if (opentask.id == 0) { + nam := getInput("Enter Project Name: ") + stmt, err := db.Prepare("INSERT INTO projects(name, finished) values(?, ?)") + checkErr(err) + _, err = stmt.Exec(nam,0) + checkErr(err) + fmt.Println(" Project Created:",nam) + getLastProject() + } else { + fmt.Println("There is an Open Task") + showOpenTask() + } } func getClosedTasks(num int) { //var rows sql.Rows //var err error - fmt.Println("___Past Tasks________________") + fmt.Println("___Past Tasks_______________") rows,err := db.Query("SELECT * FROM timetable WHERE stop != '1791-09-30 19:07' ORDER BY datetime(start)",currproject.id) checkErr(err) if num > 0 { @@ -161,7 +213,7 @@ func getClosedTasks(num int) { for rows.Next() { err = rows.Scan(&id, &proj, &sta, &sto, &tas, &check) checkErr(err) - fmt.Println(id,tas,sta.Local().Format("Mon Jan _2 15:04"),sto.Local().Format("15:04")) + fmt.Println(id,tas,sta.Local().Format("2006 Mon Jan _2 15:04"),sto.Local().Format("15:04")) } rows.Close() } @@ -237,11 +289,41 @@ func allProjects() { for rows.Next() { err = rows.Scan(&uid, &prname, &first, &last, &finish) checkErr(err) - fmt.Println(" ",uid,prname,first.Local().Format("2006-09-12 19:13"),last.Local().Format("2006-09-12 19:13"),finish) + fmt.Println(" ",uid,prname,first.Local().Format("2006-09-02 19:13"),last.Local().Format("2006-09-02 19:13"),finish) } rows.Close() //good habit to close } +func getDate(in string) string { + r := regexp.MustCompile(`(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})`) + return r.FindString(in) + //fmt.Println(r.FindString(in) +} + +func getTime(in string) string { + r := regexp.MustCompile(`(\d{2}):(\d{2})`) + return r.FindString(in) +} + +func isDate(in string) bool { + match, _ := regexp.MatchString(`(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})`,in) + return match +} + +func isTime(in string) bool { + match, _ := regexp.MatchString(`(\d{2}):(\d{2})`,in) + return match +} + +func getInput(quest string) string { + fmt.Print(quest) + in := bufio.NewReader(os.Stdin) + line, err := in.ReadString('\n') + line = strings.TrimSuffix(line, "\n") + checkErr(err) + return line +} + func checkErr(err error) { if err != nil { panic(err) |
