package training type TrainingRepository interface { Create(training *Training) error FindByID(id TrainingID) (*Training, error) FindAll() ([]Training, error) Update(training *Training) error Delete(id TrainingID) error } type TrainingDateRepository interface { Create(trainingID TrainingID, trainingDate *TrainingDate) error FindByID(id TrainingDateID) (*TrainingDate, error) FindAll() ([]TrainingDate, error) FindAllByTrainingID(trainingID TrainingID) ([]TrainingDate, error) FindUpcomingByTrainingID(trainingID TrainingID) ([]TrainingDate, error) Update(trainingDate *TrainingDate) error Delete(id TrainingDateID) error } type TrainingDateAttendeeRepository interface { Create(trainingDateID TrainingDateID, attendee *TrainingDateAttendee) error FindByID(id TrainingDateAttendeeID) (*TrainingDateAttendee, error) FindAll() ([]TrainingDateAttendee, error) FindAllByTrainingDateID(trainingDateID TrainingDateID) ([]TrainingDateAttendee, error) Update(attendee *TrainingDateAttendee) error Delete(id TrainingDateAttendeeID) error }