示例#1
0
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(&param)
				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()
}
示例#2
0
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(&param)
			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
}