| 1234567891011121314151617181920212223242526272829303132333435363738394041 | 
							- package model
 
- import (
 
- 	"errors"
 
- 	"time"
 
- )
 
- // VoyageNumber uniquely identifies a particular Voyage.
 
- type VoyageNumber string
 
- // Voyage is a uniquely identifiable series of carrier movements.
 
- type Voyage struct {
 
- 	VoyageNumber VoyageNumber
 
- 	Schedule     Schedule
 
- }
 
- // NewVoyage creates a voyage with a voyage number and a provided schedule.
 
- func NewVoyage(n VoyageNumber, s Schedule) *Voyage {
 
- 	return &Voyage{VoyageNumber: n, Schedule: s}
 
- }
 
- // Schedule describes a voyage schedule.
 
- type Schedule struct {
 
- 	CarrierMovements []CarrierMovement
 
- }
 
- // CarrierMovement is a vessel voyage from one location to another.
 
- type CarrierMovement struct {
 
- 	DepartureLocation UNLocode
 
- 	ArrivalLocation   UNLocode
 
- 	DepartureTime     time.Time
 
- 	ArrivalTime       time.Time
 
- }
 
- // ErrUnknownVoyage is used when a voyage could not be found.
 
- var ErrUnknownVoyage = errors.New("unknown voyage")
 
- // VoyageRepository provides access a voyage store.
 
- type VoyageRepository interface {
 
- 	Find(VoyageNumber) (*Voyage, error)
 
- }
 
 
  |