Implemented the weather forecast discussion product from weatherfeeder v0.8.3
All checks were successful
ci/woodpecker/push/build-image Pipeline was successful
All checks were successful
ci/woodpecker/push/build-image Pipeline was successful
This commit is contained in:
45
internal/adapters/outbound/postgres/discussion_mapper.go
Normal file
45
internal/adapters/outbound/postgres/discussion_mapper.go
Normal file
@@ -0,0 +1,45 @@
|
||||
// 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,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user