diff options
Diffstat (limited to 'internal/models')
-rw-r--r-- | internal/models/engagement.go | 32 | ||||
-rw-r--r-- | internal/models/operation.go | 11 |
2 files changed, 27 insertions, 16 deletions
diff --git a/internal/models/engagement.go b/internal/models/engagement.go index db1c2f5..26b468a 100644 --- a/internal/models/engagement.go +++ b/internal/models/engagement.go @@ -2,7 +2,6 @@ package models import ( "database/sql" - "errors" "time" ) @@ -17,20 +16,31 @@ type EngagementStrategyModel struct { DB *sql.DB } -func (m *EngagementStrategyModel) GetForOperation(id int) (EngagementStrategy, error) { +func (m *EngagementStrategyModel) GetForOperation(id int) ([]EngagementStrategy, error) { stmt := `SELECT id, valid_from, valid_to FROM engagement_strategies WHERE operation_id = ?` - row := m.DB.QueryRow(stmt, id) + rows, err := m.DB.Query(stmt, id) + if err != nil { + return nil, err + } - var es EngagementStrategy + defer rows.Close() - err := row.Scan(&es.ID, &es.ValidFrom, &es.ValidTo) - if err != nil { - if errors.Is(err, sql.ErrNoRows) { - return EngagementStrategy{}, ErrNoRecord - } else { - return EngagementStrategy{}, err + var esses []EngagementStrategy + + for rows.Next() { + var es EngagementStrategy + err = rows.Scan(&es.ID, &es.ValidFrom, &es.ValidTo) + if err != nil { + return nil, err } + + esses = append(esses, es) + } + + if err = rows.Err(); err != nil { + return nil, err } - return es, nil + + return esses, nil } diff --git a/internal/models/operation.go b/internal/models/operation.go index 4c5d67f..ecfd31b 100644 --- a/internal/models/operation.go +++ b/internal/models/operation.go @@ -6,11 +6,12 @@ import ( ) type Operation struct { - ID int - Name string - Description string - Created time.Time - OrganisationName string + ID int + Name string + Description string + Created time.Time + OrganisationName string + EngagementStrategies []EngagementStrategy } type OperationModel struct { |