File size: 1,215 Bytes
03c0050 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
package handlers
import (
"sync"
"github.com/gofiber/fiber/v2"
loaders "thesis_forecasting_website/loaders"
)
func IssuerHandler(c *fiber.Ctx) error {
var (
issuers []loaders.Issuer
sectors []string
mutex sync.Mutex
waitgroup sync.WaitGroup
errors []error
)
addError := func(err error) {
if err != nil {
mutex.Lock()
errors = append(errors, err)
mutex.Unlock()
}
}
waitgroup.Add(2)
// issuer goroutine
go func() {
defer waitgroup.Done()
issuer_data, err := loaders.IssuerLoader("./indonesia_stocks/top_50_stocks.json")
if err != nil {
addError(err)
issuer_data = []loaders.Issuer{}
}
mutex.Lock()
issuers = issuer_data
mutex.Unlock()
}()
// sector goroutine
go func() {
defer waitgroup.Done()
sector_data, err := loaders.SectorLoader("./indonesia_stocks/sectors.json")
if err != nil {
addError(err)
sector_data = []string{}
}
mutex.Lock()
sectors = sector_data
mutex.Unlock()
}()
waitgroup.Wait()
if len(errors) > 0 {
for _, err := range errors {
println(err.Error())
}
}
data := fiber.Map{
"Sectors": sectors,
"Infographics": issuers,
}
return c.Render("issuer", data)
}
|