return error channels

This commit is contained in:
Tordarus 2025-02-02 22:29:40 +01:00
parent 12e379ab62
commit db413ce145
3 changed files with 13 additions and 6 deletions

View File

@ -8,15 +8,18 @@ import (
"git.tordarus.net/tordarus/omada-api/model" "git.tordarus.net/tordarus/omada-api/model"
) )
func (api *Api) GetClients(siteID model.SiteID) <-chan *model.Client { func (api *Api) GetClients(siteID model.SiteID) (<-chan *model.Client, <-chan error) {
out := make(chan *model.Client, 1000) out := make(chan *model.Client, 1000)
errChan := make(chan error)
go func() { go func() {
defer close(out) defer close(out)
defer close(errChan)
for page := 1; ; page++ { for page := 1; ; page++ {
resp, err := api.getClients(page, siteID) resp, err := api.getClients(page, siteID)
if err != nil { if err != nil {
errChan <- err
return return
} }
@ -30,7 +33,7 @@ func (api *Api) GetClients(siteID model.SiteID) <-chan *model.Client {
} }
}() }()
return out return out, errChan
} }
func (api *Api) getClients(page int, siteID model.SiteID) (*model.PagedResponse[model.Client], error) { func (api *Api) getClients(page int, siteID model.SiteID) (*model.PagedResponse[model.Client], error) {

View File

@ -8,8 +8,9 @@ import (
"git.tordarus.net/tordarus/omada-api/model" "git.tordarus.net/tordarus/omada-api/model"
) )
func (api *Api) GetDevices(siteID model.SiteID) <-chan *model.Device { func (api *Api) GetDevices(siteID model.SiteID) (<-chan *model.Device, <-chan error) {
out := make(chan *model.Device, 1000) out := make(chan *model.Device, 1000)
errChan := make(chan error)
go func() { go func() {
defer close(out) defer close(out)
@ -17,6 +18,7 @@ func (api *Api) GetDevices(siteID model.SiteID) <-chan *model.Device {
for page := 1; ; page++ { for page := 1; ; page++ {
resp, err := api.getDevices(page, siteID) resp, err := api.getDevices(page, siteID)
if err != nil { if err != nil {
errChan <- err
return return
} }
@ -30,7 +32,7 @@ func (api *Api) GetDevices(siteID model.SiteID) <-chan *model.Device {
} }
}() }()
return out return out, errChan
} }
func (api *Api) getDevices(page int, siteID model.SiteID) (*model.PagedResponse[model.Device], error) { func (api *Api) getDevices(page int, siteID model.SiteID) (*model.PagedResponse[model.Device], error) {

View File

@ -8,8 +8,9 @@ import (
"git.tordarus.net/tordarus/omada-api/model" "git.tordarus.net/tordarus/omada-api/model"
) )
func (api *Api) GetSites() <-chan *model.Site { func (api *Api) GetSites() (<-chan *model.Site, <-chan error) {
out := make(chan *model.Site, 1000) out := make(chan *model.Site, 1000)
errChan := make(chan error)
go func() { go func() {
defer close(out) defer close(out)
@ -17,6 +18,7 @@ func (api *Api) GetSites() <-chan *model.Site {
for page := 1; ; page++ { for page := 1; ; page++ {
resp, err := api.getSites(page) resp, err := api.getSites(page)
if err != nil { if err != nil {
errChan <- err
return return
} }
@ -30,7 +32,7 @@ func (api *Api) GetSites() <-chan *model.Site {
} }
}() }()
return out return out, errChan
} }
func (api *Api) getSites(page int) (*model.PagedResponse[model.Site], error) { func (api *Api) getSites(page int) (*model.PagedResponse[model.Site], error) {