github.com/hy3/cuto@v0.9.8-0.20160830082821-aa6652f877b7/db/tx/jobtx.go (about)

     1  // Copyright 2015 unirita Inc.
     2  // Created 2015/04/10 shanxia
     3  
     4  package tx
     5  
     6  import (
     7  	"sync"
     8  
     9  	"github.com/unirita/cuto/db"
    10  	"github.com/unirita/cuto/utctime"
    11  )
    12  
    13  // JOBテーブルへINSERTする。
    14  //
    15  // param - conn DBコネクション
    16  //
    17  // param - job JOBレコード構造体ポインタ
    18  func InsertJob(conn db.IConnection, job *db.JobResult, mutex *sync.Mutex) error {
    19  	mutex.Lock()
    20  	defer mutex.Unlock()
    21  
    22  	var isCommit bool
    23  
    24  	tx, err := conn.GetDbMap().Begin()
    25  	if err != nil {
    26  		return err
    27  	}
    28  	defer func() {
    29  		if !isCommit {
    30  			tx.Rollback()
    31  		}
    32  	}()
    33  
    34  	now := utctime.Now().String()
    35  	job.CreateDate = now
    36  	job.UpdateDate = now
    37  
    38  	err = tx.Insert(job)
    39  	if err != nil {
    40  		return err
    41  	}
    42  	if err = tx.Commit(); err != nil {
    43  		return err
    44  	}
    45  	isCommit = true
    46  	return nil
    47  }
    48  
    49  // JOBテーブルへUPDATEする。
    50  //
    51  // param - conn DBコネクション
    52  //
    53  // param - job JOBレコード構造体ポインタ
    54  func UpdateJob(conn db.IConnection, job *db.JobResult, mutex *sync.Mutex) error {
    55  	mutex.Lock()
    56  	defer mutex.Unlock()
    57  
    58  	var isCommit bool
    59  	tx, err := conn.GetDbMap().Begin()
    60  	if err != nil {
    61  		return err
    62  	}
    63  	defer func() {
    64  		if !isCommit {
    65  			tx.Rollback()
    66  		}
    67  	}()
    68  
    69  	job.UpdateDate = utctime.Now().String()
    70  
    71  	if _, err = tx.Update(job); err != nil {
    72  		return err
    73  	}
    74  	if err = tx.Commit(); err != nil {
    75  		return err
    76  	}
    77  	isCommit = true
    78  	return nil
    79  }