All checks were successful
ci/woodpecker/push/build-image Pipeline was successful
46 lines
1.3 KiB
Go
46 lines
1.3 KiB
Go
// discussion_mapper.go maps forecast discussion rows into weather model payloads.
|
|
// Layer: adapters/outbound/postgres discussion feature.
|
|
package postgres
|
|
|
|
import (
|
|
"database/sql"
|
|
"strings"
|
|
|
|
"gitea.maximumdirect.net/ejr/weatherfeeder/model"
|
|
)
|
|
|
|
func mapDiscussionParentRow(row discussionParentRow) model.WeatherForecastDiscussion {
|
|
return model.WeatherForecastDiscussion{
|
|
OfficeID: stringValue(row.OfficeID),
|
|
OfficeName: stringValue(row.OfficeName),
|
|
Product: model.ForecastDiscussionProduct(strings.TrimSpace(row.Product)),
|
|
IssuedAt: row.IssuedAt.UTC(),
|
|
UpdatedAt: timePtr(row.UpdatedAt),
|
|
ShortTerm: discussionSectionPtr(row.ShortTermQualifier, row.ShortTermIssuedAt, row.ShortTermText),
|
|
LongTerm: discussionSectionPtr(row.LongTermQualifier, row.LongTermIssuedAt, row.LongTermText),
|
|
KeyMessages: nil,
|
|
}
|
|
}
|
|
|
|
func mapDiscussionKeyMessageRow(row discussionKeyMessageRow) string {
|
|
return stringValue(row.MessageText)
|
|
}
|
|
|
|
func discussionSectionPtr(
|
|
qualifier sql.NullString,
|
|
issuedAt sql.NullTime,
|
|
text sql.NullString,
|
|
) *model.WeatherForecastDiscussionSection {
|
|
q := stringValue(qualifier)
|
|
t := stringValue(text)
|
|
i := timePtr(issuedAt)
|
|
if q == "" && t == "" && i == nil {
|
|
return nil
|
|
}
|
|
return &model.WeatherForecastDiscussionSection{
|
|
Qualifier: q,
|
|
IssuedAt: i,
|
|
Text: t,
|
|
}
|
|
}
|