github.com/ztalab/ZACA@v0.0.1/database/mysql/cfssl-model/dao/forbid.go (about)

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