本文整理匯總了Golang中github.com/rafaeljusto/shelter/dao.ScanDAO.FindAll方法的典型用法代碼示例。如果您正苦於以下問題:Golang ScanDAO.FindAll方法的具體用法?Golang ScanDAO.FindAll怎麽用?Golang ScanDAO.FindAll使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/rafaeljusto/shelter/dao.ScanDAO
的用法示例。
在下文中一共展示了ScanDAO.FindAll方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: scansExpand
func scansExpand(scanDAO dao.ScanDAO) {
newScans := newScans()
for _, scan := range newScans {
if err := scanDAO.Save(&scan); err != nil {
utils.Fatalln("Error creating scans", err)
}
}
pagination := dao.ScanDAOPagination{}
scans, err := scanDAO.FindAll(&pagination, false)
if err != nil {
utils.Fatalln("Error retrieving scans", err)
}
for _, scan := range scans {
if scan.DomainsScanned != 0 ||
scan.DomainsWithDNSSECScanned != 0 ||
!scan.FinishedAt.Equal(time.Time{}) ||
len(scan.NameserverStatistics) > 0 ||
len(scan.DSStatistics) > 0 {
utils.Fatalln("Not compressing scan in results", nil)
}
}
scans, err = scanDAO.FindAll(&pagination, true)
if err != nil {
utils.Fatalln("Error retrieving scans", err)
}
for _, scan := range scans {
if scan.DomainsScanned == 0 ||
scan.DomainsWithDNSSECScanned == 0 ||
scan.FinishedAt.Equal(time.Time{}) ||
scan.StartedAt.Equal(time.Time{}) ||
len(scan.NameserverStatistics) == 0 ||
len(scan.DSStatistics) == 0 {
fmt.Println(scan.DomainsScanned == 0,
scan.DomainsWithDNSSECScanned == 0,
scan.FinishedAt.Equal(time.Time{}),
scan.StartedAt.Equal(time.Time{}),
len(scan.NameserverStatistics) == 0,
len(scan.DSStatistics) == 0)
utils.Fatalln("Compressing scan in results when it shouldn't", nil)
}
}
if err := scanDAO.RemoveAll(); err != nil {
utils.Fatalln("Error removing scans", err)
}
}
示例2: scansPagination
func scansPagination(scanDAO dao.ScanDAO) {
numberOfItems := 1000
for i := 0; i < numberOfItems; i++ {
scan := model.Scan{
StartedAt: time.Now().Add(time.Duration(-i) * time.Minute),
}
if err := scanDAO.Save(&scan); err != nil {
utils.Fatalln("Error saving scan in database", err)
}
}
pagination := dao.ScanDAOPagination{
PageSize: 10,
Page: 5,
OrderBy: []dao.ScanDAOSort{
{
Field: dao.ScanDAOOrderByFieldStartedAt,
Direction: dao.DAOOrderByDirectionAscending,
},
},
}
scans, err := scanDAO.FindAll(&pagination, true)
if err != nil {
utils.Fatalln("Error retrieving scans", err)
}
if pagination.NumberOfItems != numberOfItems {
utils.Errorln("Number of items not calculated correctly", nil)
}
if pagination.NumberOfPages != numberOfItems/pagination.PageSize {
utils.Errorln("Number of pages not calculated correctly", nil)
}
if len(scans) != pagination.PageSize {
utils.Errorln("Number of scans not following page size", nil)
}
pagination = dao.ScanDAOPagination{
PageSize: 10000,
Page: 1,
OrderBy: []dao.ScanDAOSort{
{
Field: dao.ScanDAOOrderByFieldStartedAt,
Direction: dao.DAOOrderByDirectionAscending,
},
},
}
scans, err = scanDAO.FindAll(&pagination, true)
if err != nil {
utils.Fatalln("Error retrieving scans", err)
}
if pagination.NumberOfPages != 1 {
utils.Fatalln("Calculating wrong number of pages when there's only one page", nil)
}
if err := scanDAO.RemoveAll(); err != nil {
utils.Fatalln("Error removing scans from database", err)
}
}
示例3: retrieveScans
//.........這裏部分代碼省略.........
if err := h.MessageResponse("invalid-query-order-by", ""); err == nil {
w.WriteHeader(http.StatusBadRequest)
} else {
log.Println("Error while writing response. Details:", err)
w.WriteHeader(http.StatusInternalServerError)
}
return
}
pagination.OrderBy = append(pagination.OrderBy, dao.ScanDAOSort{
Field: orderByField,
Direction: orderByDirection,
})
}
case "pagesize":
var err error
pagination.PageSize, err = strconv.Atoi(value)
if err != nil {
if err := h.MessageResponse("invalid-query-page-size", ""); err == nil {
w.WriteHeader(http.StatusBadRequest)
} else {
log.Println("Error while writing response. Details:", err)
w.WriteHeader(http.StatusInternalServerError)
}
return
}
case "page":
var err error
pagination.Page, err = strconv.Atoi(value)
if err != nil {
if err := h.MessageResponse("invalid-query-page", ""); err == nil {
w.WriteHeader(http.StatusBadRequest)
} else {
log.Println("Error while writing response. Details:", err)
w.WriteHeader(http.StatusInternalServerError)
}
return
}
case "expand":
expand = true
case "current":
returnCurrent = true
}
}
}
scanDAO := dao.ScanDAO{
Database: h.GetDatabase(),
}
// As we need to inform the user about the number of items, we always try to retrieve the scan
// objects even if is requested only the current object
scans, err := scanDAO.FindAll(&pagination, expand)
if err != nil {
log.Println("Error while searching scans objects. Details:", err)
w.WriteHeader(http.StatusInternalServerError)
return
}
var scansResponse protocol.ScansResponse
var current model.CurrentScan
if returnCurrent {
// The current page will be page zero to avoid misunderstandment
pagination.Page = 0
current = model.GetCurrentScan()
scansResponse = protocol.CurrentScanToScansResponse(current, pagination)
} else {
scansResponse = protocol.ScansToScansResponse(scans, pagination)
}
h.Response = &scansResponse
// Last-Modified is going to be the most recent date of the list
if returnCurrent {
h.lastModifiedAt = current.LastModifiedAt
} else {
for _, scan := range scans {
if scan.LastModifiedAt.After(h.lastModifiedAt) {
h.lastModifiedAt = scan.LastModifiedAt
}
}
}
w.Header().Add("ETag", h.GetETag())
w.Header().Add("Last-Modified", h.lastModifiedAt.Format(time.RFC1123))
w.WriteHeader(http.StatusOK)
}