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  }