summaryrefslogblamecommitdiffstats
path: root/internal/models/person.go
blob: d2b8585b89072bc183e4216beb345a593161c629 (plain) (tree)


















































                                                                                                                      
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
}