Upstream sync

This commit is contained in:
Senad Uka
2023-10-13 11:48:14 +02:00
parent 7369739bdd
commit d01c1a0232
29 changed files with 563 additions and 444 deletions

View File

@@ -0,0 +1,48 @@
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
}