func (jm *JobMap) GetAll(user *Hyades.Person) (jobs []*Hyades.Job, err error) { conn, err := sql.Open("sqlite3", "file:"+jm.dbFile+"?_loc=auto&_busy_timeout=60000") if err != nil { return nil, err } defer conn.Close() log.Println("Getting job for user", user.Username, user.Id) res, err := conn.Query("Select * from JOBS where OwnerID = ?", user.Id) if err != nil { return nil, err } defer closeQuery(res) for res.Next() { job := &Hyades.Job{} err := res.Scan(&job.Id, &job.OwnerID, &job.Name, &job.JobFolder, &job.Env, &job.ReturnEnv) if err != nil { log.Println(err) } log.Println("Job", job.Id, "Belongs to id", job.OwnerID) partres, err := conn.Query("Select Id,DispatchTime,FinishTime,TotalTimeDispatched,Done,Dispatched,BeingHandled,FailCount,Error,Status,Command from JOBPARTS where OwnerID = ?", job.Id) if err != nil { log.Println(err) } defer closeQuery(partres) for partres.Next() { var part Hyades.Work err := partres.Scan(&part.PartID, &part.DispatchTime, &part.FinishTime, &part.TotalTimeDispatched, &part.Done, &part.Dispatched, &part.BeingHandled, &part.FailCount, &part.Error, &part.Status, &part.Command) if err != nil { log.Println("partres.Scan", err) } paramres, err := conn.Query("Select Parameters from Parameters where JOBPARTSID = ?", part.PartID) defer closeQuery(paramres) for paramres.Next() { var param string err := paramres.Scan(¶m) if err != nil { log.Println("paramres.Scan", err) } part.Parameters = append(part.Parameters, param) } } if partres.Err() != nil { log.Println(partres.Err()) } jobs = append(jobs, job) } return jobs, res.Err() }
func (jm *JobMap) GetJob(id string) (job *Hyades.Job, err error) { conn, err := sql.Open("sqlite3", "file:"+jm.dbFile+"?_loc=auto&_busy_timeout=60000") if err != nil { return nil, err } defer conn.Close() res, err := conn.Query("Select * from JOBS where ID = ?", id) if err != nil { return nil, err } defer closeQuery(res) job = new(Hyades.Job) if res.Next() { res.Scan(&job.Id, &job.OwnerID, &job.Name, &job.JobFolder, &job.Env, &job.ReturnEnv) } log.Println("JobID", job.Id) partres, err := conn.Query("Select Id,DispatchTime,FinishTime,TotalTimeDispatched,Done,Dispatched,BeingHandled,FailCount,Error,Status,Command from JOBPARTS where OwnerID = ?", job.Id) if err != nil { log.Println(err) } defer closeQuery(partres) for partres.Next() { var part *Hyades.Work = Hyades.NewWork(job) err := partres.Scan(&part.PartID, &part.DispatchTime, &part.FinishTime, &part.TotalTimeDispatched, &part.Done, &part.Dispatched, &part.BeingHandled, &part.FailCount, &part.Error, &part.Status, &part.Command) if err != nil { log.Println("partres.Scan", err) } log.Println("PartId", part.PartID) paramres, err := conn.Query("Select Parameters from Parameters where JOBPARTSID = ?", part.PartID) defer closeQuery(paramres) for paramres.Next() { var param string err := paramres.Scan(¶m) if err != nil { log.Println("paramres.Scan", err) } part.Parameters = append(part.Parameters, param) } } if partres.Err() != nil { log.Println(partres.Err()) } log.Println("Job has", len(job.Parts), " parts") return job, err }