summaryrefslogblamecommitdiffstats
path: root/internal/models/operation.go
blob: ecfd31b12a8661cfb3136037da2763396eab9cfc (plain) (tree)
1
2
3
4
5
6
7
8



                      
              


                       





                                                 

 
                            

                  


                                                         


                                                                            


























                                                                                                
package models

import (
	"database/sql"
	"time"
)

type Operation struct {
	ID                   int
	Name                 string
	Description          string
	Created              time.Time
	OrganisationName     string
	EngagementStrategies []EngagementStrategy
}

type OperationModel struct {
	DB *sql.DB
}

func (m *OperationModel) ListAll() ([]Operation, error) {

	stmt := `SELECT op.id, op.name, op.description, op.created, org.name
	FROM operations op
	INNER JOIN organisations org ON op.organisation_id=org.id`

	// stmt := `SELECT * FROM operations`

	rows, err := m.DB.Query(stmt)
	if err != nil {
		return nil, err
	}

	defer rows.Close()

	var ops []Operation

	for rows.Next() {
		var o Operation
		err = rows.Scan(&o.ID, &o.Name, &o.Description, &o.Created, &o.OrganisationName)
		if err != nil {
			return nil, err
		}

		ops = append(ops, o)
	}

	if err = rows.Err(); err != nil {
		return nil, err
	}
	return ops, err
}