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 }