diff options
| author | Nikolaus Gotsche <n@softwarefools.com> | 2018-01-25 03:23:19 +0100 |
|---|---|---|
| committer | Nikolaus Gotsche <n@softwarefools.com> | 2018-01-25 03:23:19 +0100 |
| commit | 2d5c636a16f8b1eeff86e82f1b3c041d9b301796 (patch) | |
| tree | a02a4663439265c70d9c79217225d59f4229e0fa /sqlite.go | |
| parent | 2b1503c57722a417038d3e2dafa7faa23ef59a5b (diff) | |
Added Interactive Mode
And Colours
Gerneral Debugging
Diffstat (limited to 'sqlite.go')
| -rw-r--r-- | sqlite.go | 181 |
1 files changed, 104 insertions, 77 deletions
@@ -9,7 +9,9 @@ import ( "strings" "regexp" "strconv" + _ "github.com/mattn/go-sqlite3" + "github.com/fatih/color" ) type project struct{ @@ -64,6 +66,7 @@ func initDB(filename string) { } func newTaskTime(proj int, tim string) { + boldRed := color.New(color.FgRed, color.Bold).SprintFunc() if (opentask.id == 0) { timstr := "1791-09-30 19:07" if isDate(tim) { @@ -72,8 +75,9 @@ func newTaskTime(proj int, tim string) { 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) + fmt.Println(tim,boldRed("is Not a Valid Timestring!"), "use: 'YYYY-MM-DD HH:MM' or 'HH:MM'") + return + //os.Exit(0) } stmt, err := db.Prepare("INSERT INTO timetable(project, start, task, checkout) values(?, datetime(?,'utc'), ?, ?)") fmt.Println(timstr) @@ -90,13 +94,14 @@ func newTaskTime(proj int, tim string) { getOpenTask() updateProject(currproject.id) } else { - fmt.Println("Another Task is already Open") + fmt.Println(boldRed("Another Task is already Open")) showOpenTask() } } func newTask(proj int) { + boldRed := color.New(color.FgRed, color.Bold).SprintFunc() if (opentask.id == 0) { task := getInput("Specify Task: ") stmt, err := db.Prepare("INSERT INTO timetable(project, task, checkout) values(?, ?, ?)") @@ -111,14 +116,15 @@ func newTask(proj int) { getOpenTask() updateProject(currproject.id) } else { - fmt.Println("Another Task is already Open") + fmt.Println(boldRed("Another Task is already Open")) showOpenTask() } } func closeTaskTime(tim string) { + boldRed := color.New(color.FgRed, color.Bold).SprintFunc() if opentask.id==0 { - fmt.Println("There is no Open Task") + fmt.Println(boldRed("There is no Open Task")) return } //timt,err := time.Parse("2006-01-02 15:04",tim) @@ -131,8 +137,9 @@ func closeTaskTime(tim string) { timstr = time.Now().Local().Format("2006-01-02")+" "+getTime(tim) timst = timstr+" "+zone } else { - fmt.Println(tim,"is Not a Valid Timestring! use: 'YYYY-MM-DD HH:MM' or 'HH:MM'") - os.Exit(0) + fmt.Println(tim,boldRed("is Not a Valid Timestring!"), "use: 'YYYY-MM-DD HH:MM' or 'HH:MM'") + return + //os.Exit(0) } timt,err := time.Parse("2006-01-02 15:04 MST",timst) @@ -149,14 +156,15 @@ func closeTaskTime(tim string) { opentask.id=0 updateProject(opentask.projectid) }else{ - fmt.Println("Cannot Stop before the Beginning!") + fmt.Println(boldRed("Cannot Stop before the Beginning!")) } //fmt.Println(tim,timt) } func closeTask() { + boldRed := color.New(color.FgRed, color.Bold).SprintFunc() if opentask.id==0 { - fmt.Println("There is no Open Task") + fmt.Println(boldRed("There is no Open Task")) return } if (time.Now().After(opentask.start.Local())) { @@ -168,7 +176,7 @@ func closeTask() { opentask.id=0 updateProject(opentask.projectid) }else{ - fmt.Println("Cannot Stop before the Beginning!") + fmt.Println(boldRed("Cannot Stop before the Beginning!")) } } @@ -223,6 +231,7 @@ func showLastProject() { func newProject() { + boldRed := color.New(color.FgRed, color.Bold).SprintFunc() if (opentask.id == 0) { nam := getInput("Enter Project Name: ") stmt, err := db.Prepare("INSERT INTO projects(name, finished) values(?, ?)") @@ -232,14 +241,12 @@ func newProject() { fmt.Println(" Project Created:",nam) getLastProject() } else { - fmt.Println("There is an Open Task") + fmt.Println(boldRed("There is an Open Task")) showOpenTask() } } func getClosedTasks(num int) { - //var rows sql.Rows - //var err error 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) @@ -266,7 +273,7 @@ func getClosedTasks(num int) { } rows.Close() fmt.Println("____________________________") - fmt.Println("Gesamt:",sum,"h") + fmt.Printf("Gesamt: %.2f h\n",sum) } func getLastProject() { @@ -291,39 +298,45 @@ func getLastProject() { } } rows.Close() //good habit to close - // fmt.Println(nuid,"Last Project",nprname) - // fmt.Println(nlast) - // fmt.Println("----------------------------------") currproject.id = nuid currproject.name = nprname currproject.first = nfirst currproject.last = nlast currproject.finish = nfinish - // getLastTasks(0) } func setProject (nid int) { - rows,err := db.Query("SELECT * FROM projects WHERE id = $1",nid) - checkErr(err) + boldRed := color.New(color.FgRed, color.Bold).SprintFunc() + if !isProject(nid){ + fmt.Println(boldRed("There is no Project"),nid) + return + } + if (opentask.id == 0) { + rows,err := db.Query("SELECT * FROM projects WHERE id = $1",nid) + checkErr(err) - var uid int - var prname string - var first time.Time - var last time.Time - var finish int + var uid int + var prname string + var first time.Time + var last time.Time + var finish int - for rows.Next() { - err = rows.Scan(&uid, &prname, &first, &last, &finish) - checkErr(err) - } - rows.Close() //good habit to close - currproject.id = uid - currproject.name = prname - currproject.first = first - currproject.last = last - currproject.finish = finish - updateProject(uid) + for rows.Next() { + err = rows.Scan(&uid, &prname, &first, &last, &finish) + checkErr(err) + } + rows.Close() //good habit to close + currproject.id = uid + currproject.name = prname + currproject.first = first + currproject.last = last + currproject.finish = finish + updateProject(uid) + } else { + fmt.Println(boldRed("There is an Open Task")) + showOpenTask() + } } func allProjects() { @@ -346,6 +359,7 @@ func allProjects() { } func editTask(id int) { + boldRed := color.New(color.FgRed, color.Bold).SprintFunc() var chk,prj int var start,stop time.Time var task,startstr,stopstr string @@ -355,8 +369,9 @@ func editTask(id int) { err = rows.Scan(&prj, &start, &stop, &task, &chk) checkErr(err) }else{ - fmt.Println("There Is No Task",id) - os.Exit(0) + fmt.Println(boldRed("There Is No Task"),id) + return + //os.Exit(0) } rows.Close() //good habit to close @@ -368,38 +383,46 @@ func editTask(id int) { } startstr=start.Local().Format("2006-01-02 15:04") stopstr=stop.Local().Format("2006-01-02 15:04") - fmt.Println("Old Start:",startstr) - newstart := getInput("Enter New:") - if newstart!=""{ - if isDate(newstart) { - startstr=newstart - }else{ - fmt.Println(newstart,"is Not a Valid Timestring! use: 'YYYY-MM-DD HH:MM' or 'HH:MM'") - os.Exit(0) - } + for{ + fmt.Println("Old Start:",startstr) + newstart := getInput("Enter New:") + if newstart!=""{ + if isDate(newstart) { + startstr=newstart + break + }else{ + fmt.Println(newstart,boldRed("is Not a Valid Timestring!"), "use: 'YYYY-MM-DD HH:MM' or 'HH:MM'") + //os.Exit(0) + } + }else{break} } fmt.Println("Old End:",stopstr) - newend := getInput("Enter New:") - if newend!=""{ - if isDate(newend) { - stopstr=newend - }else{ - fmt.Println(newend,"is Not a Valid Timestring! use: 'YYYY-MM-DD HH:MM' or 'HH:MM'") - os.Exit(0) - } + for{ + newend := getInput("Enter New:") + if newend!=""{ + if isDate(newend) { + stopstr=newend + break + }else{ + fmt.Println(newend,boldRed("is Not a Valid Timestring!"), "use: 'YYYY-MM-DD HH:MM' or 'HH:MM'") + //os.Exit(0) + } + }else{break} } fmt.Println("Old Project:",prj) - newprj := getInput("Enter New:") - if newprj!=""{ - prj,err = strconv.Atoi(newprj) - if err != nil { - fmt.Println(newprj,"is Not a Valid id. Try an Integer instead") - os.Exit(0) - } - if !isProject(prj) { - fmt.Println("There is no project",prj,"Try -all for Project List") - os.Exit(0) - } + for{ + newprj := getInput("Enter New:") + if newprj!=""{ + prj,err = strconv.Atoi(newprj) + if err != nil { + fmt.Println(newprj,boldRed("is Not a Valid id."), "Try an Integer instead") + //os.Exit(0) + } + if !isProject(prj) { + fmt.Println(boldRed("There is no project"),prj,"Try -all for Project List") + //os.Exit(0) + }else{break} + }else{break} } stmt, err := db.Prepare("UPDATE timetable SET task = ?, start = datetime(?,'utc'), stop = datetime(?,'utc'), project = ? WHERE id = ?") checkErr(err) @@ -410,6 +433,7 @@ func editTask(id int) { } func editProject(id int) { + boldRed := color.New(color.FgRed, color.Bold).SprintFunc() var fin int var first time.Time var name,nfirst string @@ -426,19 +450,22 @@ func editProject(id int) { } nfirst=first.Local().Format("2006-01-02 15:04") fmt.Println("Old Begin:",nfirst) - newfirst := getInput("Enter New:") - if newfirst!=""{ - if isDate(newfirst) { - nfirst=newfirst - }else{ - fmt.Println(newfirst,"is Not a Valid Timestring! use: 'YYYY-MM-DD HH:MM' or 'HH:MM'") - os.Exit(0) - } + for{ + newfirst := getInput("Enter New:") + if newfirst!=""{ + if isDate(newfirst) { + nfirst=newfirst + break + }else{ + fmt.Println(newfirst,boldRed("is Not a Valid Timestring!"), "use: 'YYYY-MM-DD HH:MM' or 'HH:MM'") + //os.Exit(0) + } + }else{break} } - }else{ - fmt.Println("There Is No Project",id) - os.Exit(0) + fmt.Println(boldRed("There Is No Project"),id) + return + //os.Exit(0) } rows.Close() //good habit to close stmt, err := db.Prepare("UPDATE projects SET name = ?, last = datetime(?,'utc') WHERE id = ?") |
