github.com/ztalab/ZACA@v0.0.1/database/mysql/cfssl-model/dao/certificates.go (about) 1 package dao 2 3 import ( 4 "context" 5 "time" 6 7 "github.com/guregu/null" 8 "github.com/pkg/errors" 9 uuid "github.com/satori/go.uuid" 10 "gorm.io/gorm" 11 12 "github.com/ztalab/ZACA/database/mysql/cfssl-model/model" 13 ) 14 15 var ( 16 _ = time.Second 17 _ = null.Bool{} 18 _ = uuid.UUID{} 19 ) 20 21 // GetAllCertificates is a function to get a slice of record(s) from certificates table in the cap database 22 // params - page - page requested (defaults to 0) 23 // params - pagesize - number of records in a page (defaults to 20) 24 // params - order - db sort order column 25 // error - ErrNotFound, db Find error 26 func GetAllCertificates(db *gorm.DB, page, pagesize int, order string) (results []*model.Certificates, totalRows int64, err error) { 27 28 resultOrm := db.Model(&model.Certificates{}) 29 resultOrm.Count(&totalRows) 30 31 if page > 0 { 32 offset := (page - 1) * pagesize 33 resultOrm = resultOrm.Offset(offset).Limit(pagesize) 34 } else { 35 resultOrm = resultOrm.Limit(pagesize) 36 } 37 38 if order != "" { 39 resultOrm = resultOrm.Order(order) 40 } 41 42 if err = resultOrm.Find(&results).Error; err != nil { 43 if errors.Is(err, gorm.ErrRecordNotFound) { 44 return results, totalRows, nil 45 } 46 return nil, -1, err 47 } 48 49 return results, totalRows, nil 50 } 51 52 // GetCertificates is a function to get a single record from the certificates table in the cap database 53 // error - ErrNotFound, db Find error 54 func GetCertificates(db *gorm.DB, argId string) (record *model.Certificates, err error) { 55 record = &model.Certificates{} 56 if err = db.Where("id = ?", argId).First(record).Error; err != nil { 57 if errors.Is(err, gorm.ErrRecordNotFound) { 58 return nil, nil 59 } 60 return nil, err 61 } 62 63 return record, nil 64 } 65 66 // AddCertificates is a function to add a single record to certificates table in the cap database 67 // error - ErrInsertFailed, db save call failed 68 func AddCertificates(ctx context.Context, record *model.Certificates) (result *model.Certificates, RowsAffected int64, err error) { 69 db := DB.Save(record) 70 if err = db.Error; err != nil { 71 return nil, -1, ErrInsertFailed 72 } 73 74 return record, db.RowsAffected, nil 75 } 76 77 // UpdateCertificates is a function to update a single record from certificates table in the cap database 78 // error - ErrNotFound, db record for id not found 79 // error - ErrUpdateFailed, db meta data copy failed or db.Save call failed 80 func UpdateCertificates(ctx context.Context, argSerialNumber string, argAuthorityKeyIdentifier string, updated *model.Certificates) (result *model.Certificates, RowsAffected int64, err error) { 81 82 result = &model.Certificates{} 83 db := DB.First(result, argSerialNumber, argAuthorityKeyIdentifier) 84 if err = db.Error; err != nil { 85 return nil, -1, ErrNotFound 86 } 87 88 if err = Copy(result, updated); err != nil { 89 return nil, -1, ErrUpdateFailed 90 } 91 92 db = db.Save(result) 93 if err = db.Error; err != nil { 94 return nil, -1, ErrUpdateFailed 95 } 96 97 return result, db.RowsAffected, nil 98 } 99 100 // DeleteCertificates is a function to delete a single record from certificates table in the cap database 101 // error - ErrNotFound, db Find error 102 // error - ErrDeleteFailed, db Delete failed error 103 func DeleteCertificates(ctx context.Context, argSerialNumber string, argAuthorityKeyIdentifier string) (rowsAffected int64, err error) { 104 105 record := &model.Certificates{} 106 db := DB.First(record, argSerialNumber, argAuthorityKeyIdentifier) 107 if db.Error != nil { 108 return -1, ErrNotFound 109 } 110 111 db = db.Delete(record) 112 if err = db.Error; err != nil { 113 return -1, ErrDeleteFailed 114 } 115 116 return db.RowsAffected, nil 117 }