summaryrefslogtreecommitdiff
path: root/sqlite.go
diff options
context:
space:
mode:
Diffstat (limited to 'sqlite.go')
-rw-r--r--sqlite.go135
1 files changed, 128 insertions, 7 deletions
diff --git a/sqlite.go b/sqlite.go
index e6e5845..9082855 100644
--- a/sqlite.go
+++ b/sqlite.go
@@ -8,6 +8,7 @@ import (
"bufio"
"strings"
"regexp"
+ "strconv"
_ "github.com/mattn/go-sqlite3"
)
@@ -77,7 +78,6 @@ func newTaskTime(proj int, tim string) {
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)
@@ -85,10 +85,6 @@ func newTaskTime(proj int, tim string) {
_, 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()
@@ -121,6 +117,10 @@ func newTask(proj int) {
}
func closeTaskTime(tim string) {
+ if opentask.id==0 {
+ fmt.Println("There is no Open Task")
+ return
+ }
//timt,err := time.Parse("2006-01-02 15:04",tim)
timst,timstr := "1791-09-30 19:07","1791-09-30 19:07"
zone, _ := time.Now().Zone()
@@ -138,7 +138,7 @@ func closeTaskTime(tim string) {
timt,err := time.Parse("2006-01-02 15:04 MST",timst)
checkErr(err)
- fmt.Println(timst,timt,opentask.start)
+ //fmt.Println(timst,timt,opentask.start)
if (timt.After(opentask.start)) {
//timstr := timt.UTC().Format("2006-01-02 15:04")
fmt.Println("...Closing Task",opentask.id,"at",timst)
@@ -155,6 +155,10 @@ func closeTaskTime(tim string) {
}
func closeTask() {
+ if opentask.id==0 {
+ fmt.Println("There is no Open Task")
+ return
+ }
if (time.Now().After(opentask.start.Local())) {
fmt.Println("...Closing Task",opentask.id)
stmt, err := db.Prepare("UPDATE timetable SET stop = datetime('now') WHERE id = ?")
@@ -212,7 +216,8 @@ func showLastProject() {
fmt.Println("Empty DB")
} else {
fmt.Println("___Last Project_____________")
- fmt.Println(currproject.id,":", currproject.name, currproject.last.Local().Format("2006 Mon Jan _2 15:04 2006"))
+ fmt.Println(currproject.id,":", currproject.name,"- Started:",currproject.first.Local().Format("Mon _2 Jan 2006"))
+ fmt.Println(" Last Changes",currproject.last.Local().Format("2006 Mon Jan _2 15:04"))
}
}
@@ -340,6 +345,122 @@ func allProjects() {
rows.Close() //good habit to close
}
+func editTask(id int) {
+ var chk,prj int
+ var start,stop time.Time
+ var task,startstr,stopstr string
+ rows,err := db.Query("SELECT project, start, stop, task, checkout FROM timetable WHERE id = $1",id)
+ checkErr(err)
+ if rows.Next() {
+ err = rows.Scan(&prj, &start, &stop, &task, &chk)
+ checkErr(err)
+ }else{
+ fmt.Println("There Is No Task",id)
+ os.Exit(0)
+ }
+ rows.Close() //good habit to close
+
+ fmt.Println("Edit Task",id)
+ fmt.Println("Old Name:",task)
+ in := getInput("Enter New:")
+ if in!=""{
+ task=in
+ }
+ 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)
+ }
+ }
+ 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)
+ }
+ }
+ 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)
+ }
+ }
+ stmt, err := db.Prepare("UPDATE timetable SET task = ?, start = datetime(?,'utc'), stop = datetime(?,'utc'), project = ? WHERE id = ?")
+ checkErr(err)
+ _, err = stmt.Exec(task,startstr,stopstr,prj,id)
+ checkErr(err)
+ updateProject(prj)
+ fmt.Println("...Task",id,"Updated")
+}
+
+func editProject(id int) {
+ var fin int
+ var first time.Time
+ var name,nfirst string
+ rows,err := db.Query("SELECT name, first, finished FROM projects WHERE id = $1",id)
+ checkErr(err)
+ if rows.Next() {
+ err = rows.Scan(&name, &first, &fin)
+ checkErr(err)
+ fmt.Println("Edit Project",id)
+ fmt.Println("Old Name:",name)
+ in := getInput("Enter New:")
+ if in!=""{
+ name=in
+ }
+ 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)
+ }
+ }
+
+ }else{
+ fmt.Println("There Is No Project",id)
+ os.Exit(0)
+ }
+ rows.Close() //good habit to close
+ stmt, err := db.Prepare("UPDATE projects SET name = ?, last = datetime(?,'utc') WHERE id = ?")
+ checkErr(err)
+ _, err = stmt.Exec(name,nfirst,id)
+ checkErr(err)
+ updateProject(id)
+ fmt.Println("...Project",id,"Updated")
+}
+
+func isProject(id int) bool {
+
+ rows,err := db.Query("SELECT * FROM projects WHERE id = $1",id)
+ checkErr(err)
+ defer rows.Close()
+ if rows.Next() {
+ return true
+ } else {
+ return false
+ }
+}
+
func getDate(in string) string {
r := regexp.MustCompile(`(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})`)
return r.FindString(in)