All checks were successful
ci/woodpecker/push/build-image Pipeline was successful
49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
// weatherstories.go presents weather story payloads.
|
|
// Layer: adapters/inbound/httpapi/presenter weather stories payload mapping.
|
|
package presenter
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gitea.maximumdirect.net/ejr/weatherfeeder/model"
|
|
)
|
|
|
|
func WeatherStoryRunPayload(run *model.WeatherStoryRun, _ Units, tz *time.Location) any {
|
|
if run == nil {
|
|
return nil
|
|
}
|
|
|
|
out := model.WeatherStoryRun{
|
|
OfficeID: run.OfficeID,
|
|
AsOf: inLocationTime(run.AsOf, tz),
|
|
Stories: make([]model.WeatherStory, 0, len(run.Stories)),
|
|
}
|
|
for _, story := range run.Stories {
|
|
out.Stories = append(out.Stories, copyWeatherStory(story, tz))
|
|
}
|
|
return &out
|
|
}
|
|
|
|
func WeatherStoryPayload(story *model.WeatherStory, _ Units, tz *time.Location) any {
|
|
if story == nil {
|
|
return nil
|
|
}
|
|
out := copyWeatherStory(*story, tz)
|
|
return &out
|
|
}
|
|
|
|
func copyWeatherStory(story model.WeatherStory, tz *time.Location) model.WeatherStory {
|
|
return model.WeatherStory{
|
|
OfficeID: story.OfficeID,
|
|
StartTime: inLocationTime(story.StartTime, tz),
|
|
EndTime: inLocationTime(story.EndTime, tz),
|
|
UpdatedAt: inLocationTime(story.UpdatedAt, tz),
|
|
Title: story.Title,
|
|
Description: story.Description,
|
|
AltText: story.AltText,
|
|
Priority: story.Priority,
|
|
Order: story.Order,
|
|
DownloadURL: story.DownloadURL,
|
|
}
|
|
}
|