package models import ( "database/sql" "time" ) type Person struct { ID string FirstName string LastName string OrganisationName string OrganisationID int RoleName string Created time.Time } type PersonModel struct { DB *sql.DB } func (m *PersonModel) ListAll() ([]Person, error) { stmt := `SELECT p.id, p.first_name, p.last_name, p.role_name, org.name, org.id FROM persons p INNER JOIN organisations org ON p.organisation_id=org.id` rows, err := m.DB.Query(stmt) if err != nil { return nil, err } defer rows.Close() var ps []Person for rows.Next() { var p Person err = rows.Scan(&p.ID, &p.FirstName, &p.LastName, &p.RoleName, &p.OrganisationName, &p.OrganisationID) if err != nil { return nil, err } ps = append(ps, p) } if err = rows.Err(); err != nil { return nil, err } return ps, err }