Files
old-backend/database/company/company.go
2023-10-13 11:48:14 +02:00

49 lines
1.2 KiB
Go

package company
import (
"errors"
"log"
"net/http"
"github.com/jinzhu/gorm"
"gitlab.com/pactual1/backend/models"
"gitlab.com/pactual1/backend/shared"
)
func GetCompanies(companyIDs []int64, limit, offset int) ([]models.Company, int64, int, error) {
companies := []models.Company{}
db := shared.GetDb()
countDb := db
// Search by IDs
if len(companyIDs) > 0 {
db = db.Where("companies.id IN (?)", companyIDs)
countDb = countDb.Where("companies.id IN (?)", companyIDs)
}
// Fetch total count of filtered records
var total int64
if err := countDb.Model(&models.Company{}).Count(&total).Error; err != nil {
log.Printf("GetCompanies Error: Database error: %v", err)
return companies, total, http.StatusInternalServerError, err
}
// Fetch companies with custom fields
if err := db.Select("*").
Order("created_at desc").
Limit(limit).
Offset(offset).
Find(&companies).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
log.Printf("GetCompanies Error: No companies found: %v", err)
return companies, total, http.StatusNotFound, err
} else {
log.Printf("GetCompanies Error: Database error: %v", err)
return companies, total, http.StatusInternalServerError, err
}
}
return companies, total, http.StatusOK, nil
}