1
0
Fork 0

refactor(training): use golang style of naming (do not repeat pacakge name in struct/func names)

This commit is contained in:
Vojtěch Mareš 2024-06-23 13:13:44 +02:00
parent e0f401f0a9
commit c3795dba6a
Signed by: vojtech.mares
GPG key ID: C6827B976F17240D
12 changed files with 232 additions and 232 deletions

View file

@ -548,7 +548,7 @@ components:
TrainingID:
type: integer
minimum: 1
x-go-type: training.TrainingID
x-go-type: training.ID
x-go-type-import:
path: gitlab.mareshq.com/hq/yggdrasil/pkg/training
@ -654,7 +654,7 @@ components:
TrainingDateID:
type: integer
minimum: 1
x-go-type: training.TrainingDateID
x-go-type: training.DateID
x-go-type-import:
path: gitlab.mareshq.com/hq/yggdrasil/pkg/training
@ -707,7 +707,7 @@ components:
TrainingDateAttendeeID:
type: integer
minimum: 1
x-go-type: training.TrainingDateAttendeeID
x-go-type: training.AttendeeID
x-go-type-import:
path: gitlab.mareshq.com/hq/yggdrasil/pkg/training

View file

@ -53,7 +53,7 @@ func main() {
}
trainingRepo := training.NewPostgresTrainingRepository(pool)
trainingDateRepo := training.NewPostgresTrainingDateRepository(pool)
trainingDateRepo := training.NewPostgresDateRepository(pool)
//trainingDateAttendeeRepo := training.NewPostgresTrainingDateAttendeeRepository(pool)
f := faker.NewFaker(trainingRepo, trainingDateRepo)

View file

@ -57,8 +57,8 @@ func Bootstrap(logger *zap.Logger) *server.Server {
}
trainingRepo := training.NewPostgresTrainingRepository(pool)
trainingDateRepo := training.NewPostgresTrainingDateRepository(pool)
trainingDateAttendeeRepo := training.NewPostgresTrainingDateAttendeeRepository(pool)
trainingDateRepo := training.NewPostgresDateRepository(pool)
trainingDateAttendeeRepo := training.NewPostgresAttendeeRepository(pool)
apiHandlers := server.NewAPIHandlers(trainingRepo, trainingDateRepo, trainingDateAttendeeRepo)
@ -78,8 +78,8 @@ func BootstrapInMemory(logger *zap.Logger) *server.Server {
}
trainingRepository := training.NewInMemoryTrainingRepository()
trainingDateRepository := training.NewInMemoryTrainingDateRepository()
trainingDateAttendeeRepository := training.NewInMemoryTrainingDateAttendeeRepository()
trainingDateRepository := training.NewInMemoryDateRepository()
trainingDateAttendeeRepository := training.NewInMemoryAttendeeRepository()
f := faker.NewFaker(trainingRepository, trainingDateRepository)
if err := f.GenerateFakeData(); err != nil {

View file

@ -10,11 +10,11 @@ import (
)
type Faker struct {
trainingRepository training.TrainingRepository
trainingDateRepository training.TrainingDateRepository
trainingRepository training.Repository
trainingDateRepository training.DateRepository
}
func NewFaker(trainingRepository training.TrainingRepository, trainingDateRepository training.TrainingDateRepository) *Faker {
func NewFaker(trainingRepository training.Repository, trainingDateRepository training.DateRepository) *Faker {
return &Faker{
trainingRepository: trainingRepository,
trainingDateRepository: trainingDateRepository,
@ -27,7 +27,7 @@ func (f *Faker) GenerateFakeData() error {
Name: "Kubernetes",
Days: 2,
Description: "Kubernetes",
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(450),
Currency: money.USD,
@ -54,7 +54,7 @@ func (f *Faker) GenerateFakeData() error {
Name: "Terraform",
Days: 1,
Description: "Terraform",
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: money.USD,
@ -81,7 +81,7 @@ func (f *Faker) GenerateFakeData() error {
Name: "RKE2",
Days: 1,
Description: "RKE2",
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: money.USD,
@ -108,7 +108,7 @@ func (f *Faker) GenerateFakeData() error {
Name: "GitHub Actions",
Days: 1,
Description: "GitHub Actions",
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: money.USD,
@ -135,7 +135,7 @@ func (f *Faker) GenerateFakeData() error {
Name: "GitLab CI",
Days: 1,
Description: "GitLab CI",
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: money.USD,
@ -162,7 +162,7 @@ func (f *Faker) GenerateFakeData() error {
Name: "Prometheus",
Days: 2,
Description: "Prometheus",
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(450),
Currency: money.USD,
@ -230,7 +230,7 @@ func (f *Faker) GenerateFakeData() error {
}
}
td := training.TrainingDate{
td := training.Date{
Date: date,
StartTime: date.Truncate(24 * time.Hour),
Days: t.Days,

View file

@ -173,7 +173,7 @@ type TrainingDateAttendeeAttendanceUpdateRequest struct {
}
// TrainingDateAttendeeID defines model for TrainingDateAttendeeID.
type TrainingDateAttendeeID = training.TrainingDateAttendeeID
type TrainingDateAttendeeID = training.AttendeeID
// TrainingDateAttendeePaymentUpdateRequest defines model for TrainingDateAttendeePaymentUpdateRequest.
type TrainingDateAttendeePaymentUpdateRequest struct {
@ -181,10 +181,10 @@ type TrainingDateAttendeePaymentUpdateRequest struct {
}
// TrainingDateID defines model for TrainingDateID.
type TrainingDateID = training.TrainingDateID
type TrainingDateID = training.DateID
// TrainingID defines model for TrainingID.
type TrainingID = training.TrainingID
type TrainingID = training.ID
// TrainingPrice defines model for TrainingPrice.
type TrainingPrice struct {
@ -2336,44 +2336,44 @@ func (sh *strictHandler) ListTrainingUpcomingDates(ctx *fiber.Ctx, trainingID Tr
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"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",
}
// GetSwagger returns the content of the embedded swagger specification file

View file

@ -13,12 +13,12 @@ import (
)
type APIHandlers struct {
trainingRepository training.TrainingRepository
trainingDateRepository training.TrainingDateRepository
trainingDateAttendeeRepository training.TrainingDateAttendeeRepository
trainingRepository training.Repository
trainingDateRepository training.DateRepository
trainingDateAttendeeRepository training.AttendeeRepository
}
func NewAPIHandlers(trainingRepository training.TrainingRepository, trainingDateRepository training.TrainingDateRepository, trainingDateAttendeeRepository training.TrainingDateAttendeeRepository) *APIHandlers {
func NewAPIHandlers(trainingRepository training.Repository, trainingDateRepository training.DateRepository, trainingDateAttendeeRepository training.AttendeeRepository) *APIHandlers {
return &APIHandlers{
trainingRepository: trainingRepository,
trainingDateRepository: trainingDateRepository,
@ -60,7 +60,7 @@ func (h *APIHandlers) ListTrainings(ctx context.Context, req ListTrainingsReques
}
func (h *APIHandlers) CreateTraining(ctx context.Context, req CreateTrainingRequestObject) (CreateTrainingResponseObject, error) {
pricing := make([]training.TrainingPrice, len(req.Body.Pricing))
pricing := make([]training.Price, len(req.Body.Pricing))
for idx, p := range req.Body.Pricing {
amount, err := decimal.NewFromString(p.Amount)
if err != nil {
@ -72,10 +72,10 @@ func (h *APIHandlers) CreateTraining(ctx context.Context, req CreateTrainingRequ
}}, nil
}
pricing[idx] = training.TrainingPrice{
pricing[idx] = training.Price{
Amount: amount,
Currency: p.Currency,
Type: training.TrainingPriceType(p.Type),
Type: training.PriceType(p.Type),
}
}
@ -169,7 +169,7 @@ func (h *APIHandlers) GetTraining(ctx context.Context, req GetTrainingRequestObj
}
func (h *APIHandlers) UpdateTraining(ctx context.Context, req UpdateTrainingRequestObject) (UpdateTrainingResponseObject, error) {
pricing := make([]training.TrainingPrice, len(req.Body.Pricing))
pricing := make([]training.Price, len(req.Body.Pricing))
for idx, p := range req.Body.Pricing {
amount, err := decimal.NewFromString(p.Amount)
if err != nil {
@ -181,10 +181,10 @@ func (h *APIHandlers) UpdateTraining(ctx context.Context, req UpdateTrainingRequ
}}, nil
}
pricing[idx] = training.TrainingPrice{
pricing[idx] = training.Price{
Amount: amount,
Currency: p.Currency,
Type: training.TrainingPriceType(p.Type),
Type: training.PriceType(p.Type),
}
}
t := training.Training{
@ -273,7 +273,7 @@ func (h *APIHandlers) CreateTrainingDate(ctx context.Context, req CreateTraining
}}, nil
}
td := training.TrainingDate{
td := training.Date{
Date: req.Body.Date.Time,
StartTime: startTime,
Days: req.Body.Days,
@ -390,7 +390,7 @@ func (h *APIHandlers) UpdateTrainingDate(ctx context.Context, req UpdateTraining
}}, nil
}
td := training.TrainingDate{
td := training.Date{
ID: req.TrainingDateID,
Date: req.Body.Date.Time,
StartTime: startTime,
@ -577,7 +577,7 @@ func (h *APIHandlers) CreateTrainingDateAttendee(ctx context.Context, req Create
}
}
ta := training.TrainingDateAttendee{
ta := training.Attendee{
Name: req.Body.Name,
Email: string(req.Body.Email),
Phone: req.Body.Phone,

View file

@ -80,8 +80,8 @@ func doDelete(t *testing.T, app *fiber.App, rawURL string) (*http.Response, erro
func TestServer(t *testing.T) {
//var err error
trainingRepo := training.NewInMemoryTrainingRepository()
trainingDateRepo := training.NewInMemoryTrainingDateRepository()
trainingDateAttendeeRepo := training.NewInMemoryTrainingDateAttendeeRepository()
trainingDateRepo := training.NewInMemoryDateRepository()
trainingDateAttendeeRepo := training.NewInMemoryAttendeeRepository()
handlers := NewAPIHandlers(trainingRepo, trainingDateRepo, trainingDateAttendeeRepo)
app := NewTestingServer(handlers)
@ -142,7 +142,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training",
Description: "This is a test training",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -166,7 +166,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training",
Description: "This is a test training",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -204,7 +204,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training",
Description: "This is a test training",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -243,7 +243,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -293,7 +293,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -318,7 +318,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -330,7 +330,7 @@ func TestServer(t *testing.T) {
date := time.Date(2024, time.May, 1, 0, 0, 0, 0, time.UTC)
td := &training.TrainingDate{
td := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -362,7 +362,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -374,7 +374,7 @@ func TestServer(t *testing.T) {
date := time.Date(2024, time.May, 1, 0, 0, 0, 0, time.UTC)
td := &training.TrainingDate{
td := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -423,7 +423,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -435,7 +435,7 @@ func TestServer(t *testing.T) {
date := time.Date(2024, time.May, 1, 0, 0, 0, 0, time.UTC)
td := &training.TrainingDate{
td := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -482,7 +482,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -496,7 +496,7 @@ func TestServer(t *testing.T) {
upcomingTrainingCount := 5
for i := -4; i <= 5; i++ {
date := now.AddDate(0, 0, i)
td := &training.TrainingDate{
td := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -524,7 +524,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date 1",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -538,7 +538,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date 2",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -552,7 +552,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date 3",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -568,7 +568,7 @@ func TestServer(t *testing.T) {
upcomingTrainingCount := 5
for i := -4; i <= upcomingTrainingCount; i++ {
date := now.AddDate(0, 0, i)
td1 := &training.TrainingDate{
td1 := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -581,7 +581,7 @@ func TestServer(t *testing.T) {
}
_ = handlers.trainingDateRepository.Create(tr1.ID, td1)
td2 := &training.TrainingDate{
td2 := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -594,7 +594,7 @@ func TestServer(t *testing.T) {
}
_ = handlers.trainingDateRepository.Create(tr2.ID, td2)
td3 := &training.TrainingDate{
td3 := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -628,7 +628,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -641,7 +641,7 @@ func TestServer(t *testing.T) {
date := time.Date(2024, time.May, 1, 9, 0, 0, 0, time.UTC)
td := &training.TrainingDate{
td := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -668,7 +668,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -681,7 +681,7 @@ func TestServer(t *testing.T) {
date := time.Date(2024, time.May, 1, 9, 0, 0, 0, time.UTC)
td := &training.TrainingDate{
td := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -726,7 +726,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -739,7 +739,7 @@ func TestServer(t *testing.T) {
date := time.Date(2024, time.May, 1, 9, 0, 0, 0, time.UTC)
td := &training.TrainingDate{
td := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -753,9 +753,9 @@ func TestServer(t *testing.T) {
_ = handlers.trainingDateRepository.Create(tr.ID, td)
attendeeCount := 9
attendees := make([]training.TrainingDateAttendee, attendeeCount)
attendees := make([]training.Attendee, attendeeCount)
for i := range attendeeCount {
nAtd := &training.TrainingDateAttendee{
nAtd := &training.Attendee{
Name: "John Doe",
Email: "john.doe@example.com",
Company: "Acme Inc.",
@ -799,7 +799,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -812,7 +812,7 @@ func TestServer(t *testing.T) {
date := time.Date(2024, time.May, 1, 9, 0, 0, 0, time.UTC)
td := &training.TrainingDate{
td := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -825,7 +825,7 @@ func TestServer(t *testing.T) {
}
_ = handlers.trainingDateRepository.Create(tr.ID, td)
attendee := &training.TrainingDateAttendee{
attendee := &training.Attendee{
Name: "John Doe",
Email: "john.doe@example.com",
Company: "Acme Inc.",
@ -862,7 +862,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -875,7 +875,7 @@ func TestServer(t *testing.T) {
date := time.Date(2024, time.May, 1, 9, 0, 0, 0, time.UTC)
td := &training.TrainingDate{
td := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -888,7 +888,7 @@ func TestServer(t *testing.T) {
}
_ = handlers.trainingDateRepository.Create(tr.ID, td)
attendee := &training.TrainingDateAttendee{
attendee := &training.Attendee{
Name: "John Doe",
Email: "john.doe@example.com",
Company: "Acme Inc.",
@ -935,7 +935,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -948,7 +948,7 @@ func TestServer(t *testing.T) {
date := time.Date(2024, time.May, 1, 9, 0, 0, 0, time.UTC)
td := &training.TrainingDate{
td := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -961,7 +961,7 @@ func TestServer(t *testing.T) {
}
_ = handlers.trainingDateRepository.Create(tr.ID, td)
attendee := &training.TrainingDateAttendee{
attendee := &training.Attendee{
Name: "John Doe",
Email: "john.doe@example.com",
Company: "Acme Inc.",
@ -991,7 +991,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -1004,7 +1004,7 @@ func TestServer(t *testing.T) {
date := time.Date(2024, time.May, 1, 9, 0, 0, 0, time.UTC)
td := &training.TrainingDate{
td := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -1021,7 +1021,7 @@ func TestServer(t *testing.T) {
Paid: true,
}
attendee := &training.TrainingDateAttendee{
attendee := &training.Attendee{
Name: "John Doe",
Email: "john.doe@example.com",
Company: "Acme Inc.",
@ -1064,7 +1064,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -1077,7 +1077,7 @@ func TestServer(t *testing.T) {
date := time.Date(2024, time.May, 1, 9, 0, 0, 0, time.UTC)
td := &training.TrainingDate{
td := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -1094,7 +1094,7 @@ func TestServer(t *testing.T) {
Attended: true,
}
attendee := &training.TrainingDateAttendee{
attendee := &training.Attendee{
Name: "John Doe",
Email: "john.doe@example.com",
Company: "Acme Inc.",
@ -1137,7 +1137,7 @@ func TestServer(t *testing.T) {
Name: "Testing Training for training date",
Description: "This is a test training for training date",
Days: 1,
Pricing: []training.TrainingPrice{
Pricing: []training.Price{
{
Amount: decimal.NewFromInt(200),
Currency: "EUR",
@ -1150,7 +1150,7 @@ func TestServer(t *testing.T) {
date := time.Date(2024, time.May, 1, 9, 0, 0, 0, time.UTC)
td := &training.TrainingDate{
td := &training.Date{
Address: "Test Address 123, NYC",
Capacity: 12,
Date: date,
@ -1165,7 +1165,7 @@ func TestServer(t *testing.T) {
attendeeCount := 9
for range attendeeCount {
nAtd := &training.TrainingDateAttendee{
nAtd := &training.Attendee{
Name: "John Doe",
Email: "john.doe@example.com",
Company: "Acme Inc.",

View file

@ -36,7 +36,7 @@ CREATE TABLE IF NOT EXISTS training.dates (
CONSTRAINT allowed_currencies CHECK (price_currency IN ('USD', 'EUR', 'CZK'))
);
CREATE TABLE IF NOT EXISTS training.date_attendees (
CREATE TABLE IF NOT EXISTS training.attendees (
id SERIAL PRIMARY KEY,
date_id SERIAL REFERENCES training.dates(id),
name VARCHAR(255) NOT NULL,

View file

@ -6,14 +6,14 @@ import (
)
type InMemoryTrainingRepository struct {
trainings map[TrainingID]Training
trainings map[ID]Training
lock sync.RWMutex
ai int
}
func NewInMemoryTrainingRepository() *InMemoryTrainingRepository {
return &InMemoryTrainingRepository{
trainings: make(map[TrainingID]Training),
trainings: make(map[ID]Training),
ai: 1,
}
}
@ -28,7 +28,7 @@ func (r *InMemoryTrainingRepository) Create(training *Training) error {
return nil
}
func (r *InMemoryTrainingRepository) FindByID(id TrainingID) (*Training, error) {
func (r *InMemoryTrainingRepository) FindByID(id ID) (*Training, error) {
r.lock.RLock()
defer r.lock.RUnlock()
@ -58,7 +58,7 @@ func (r *InMemoryTrainingRepository) Update(training *Training) error {
return nil
}
func (r *InMemoryTrainingRepository) Delete(id TrainingID) error {
func (r *InMemoryTrainingRepository) Delete(id ID) error {
r.lock.Lock()
defer r.lock.Unlock()
@ -71,23 +71,23 @@ func (r *InMemoryTrainingRepository) Delete(id TrainingID) error {
return nil
}
type InMemoryTrainingDateRepository struct {
trainingDates map[TrainingDateID]TrainingDate
trainingToDates map[TrainingID][]TrainingDateID
type InMemoryDateRepository struct {
trainingDates map[DateID]Date
trainingToDates map[ID][]DateID
lock sync.RWMutex
ai int
}
func NewInMemoryTrainingDateRepository() *InMemoryTrainingDateRepository {
return &InMemoryTrainingDateRepository{
trainingDates: make(map[TrainingDateID]TrainingDate),
trainingToDates: make(map[TrainingID][]TrainingDateID),
func NewInMemoryDateRepository() *InMemoryDateRepository {
return &InMemoryDateRepository{
trainingDates: make(map[DateID]Date),
trainingToDates: make(map[ID][]DateID),
ai: 1,
}
}
func (r *InMemoryTrainingDateRepository) Create(trainingID TrainingID, trainingDate *TrainingDate) error {
func (r *InMemoryDateRepository) Create(trainingID ID, trainingDate *Date) error {
r.lock.Lock()
defer r.lock.Unlock()
@ -100,7 +100,7 @@ func (r *InMemoryTrainingDateRepository) Create(trainingID TrainingID, trainingD
return nil
}
func (r *InMemoryTrainingDateRepository) FindByID(id TrainingDateID) (*TrainingDate, error) {
func (r *InMemoryDateRepository) FindByID(id DateID) (*Date, error) {
r.lock.RLock()
defer r.lock.RUnlock()
@ -111,11 +111,11 @@ func (r *InMemoryTrainingDateRepository) FindByID(id TrainingDateID) (*TrainingD
return &date, nil
}
func (r *InMemoryTrainingDateRepository) FindAll() ([]TrainingDate, error) {
func (r *InMemoryDateRepository) FindAll() ([]Date, error) {
r.lock.RLock()
defer r.lock.RUnlock()
dates := make([]TrainingDate, len(r.trainingDates))
dates := make([]Date, len(r.trainingDates))
for _, date := range r.trainingDates {
dates = append(dates, date)
}
@ -123,11 +123,11 @@ func (r *InMemoryTrainingDateRepository) FindAll() ([]TrainingDate, error) {
return dates, nil
}
func (r *InMemoryTrainingDateRepository) FindAllByTrainingID(trainingID TrainingID) ([]TrainingDate, error) {
func (r *InMemoryDateRepository) FindAllByTrainingID(trainingID ID) ([]Date, error) {
r.lock.RLock()
defer r.lock.RUnlock()
dates := make([]TrainingDate, 0)
dates := make([]Date, 0)
for _, id := range r.trainingToDates[trainingID] {
dates = append(dates, r.trainingDates[id])
}
@ -135,12 +135,12 @@ func (r *InMemoryTrainingDateRepository) FindAllByTrainingID(trainingID Training
return dates, nil
}
func (r *InMemoryTrainingDateRepository) FindUpcomingByTrainingID(trainingID TrainingID) ([]TrainingDate, error) {
func (r *InMemoryDateRepository) FindUpcomingByTrainingID(trainingID ID) ([]Date, error) {
r.lock.RLock()
defer r.lock.RUnlock()
now := time.Now()
var dates []TrainingDate
var dates []Date
for _, id := range r.trainingToDates[trainingID] {
date := r.trainingDates[id]
if date.Date.After(now) {
@ -151,7 +151,7 @@ func (r *InMemoryTrainingDateRepository) FindUpcomingByTrainingID(trainingID Tra
return dates, nil
}
func (r *InMemoryTrainingDateRepository) Update(trainingDate *TrainingDate) error {
func (r *InMemoryDateRepository) Update(trainingDate *Date) error {
r.lock.Lock()
defer r.lock.Unlock()
@ -161,7 +161,7 @@ func (r *InMemoryTrainingDateRepository) Update(trainingDate *TrainingDate) erro
return nil
}
func (r *InMemoryTrainingDateRepository) Delete(id TrainingDateID) error {
func (r *InMemoryDateRepository) Delete(id DateID) error {
r.lock.Lock()
defer r.lock.Unlock()
@ -182,23 +182,23 @@ func (r *InMemoryTrainingDateRepository) Delete(id TrainingDateID) error {
return nil
}
type InMemoryTrainingDateAttendeeRepository struct {
attendees map[TrainingDateAttendeeID]TrainingDateAttendee
dateToAttendees map[TrainingDateID][]TrainingDateAttendeeID
type InMemoryAttendeeRepository struct {
attendees map[AttendeeID]Attendee
dateToAttendees map[DateID][]AttendeeID
lock sync.RWMutex
ai int
}
func NewInMemoryTrainingDateAttendeeRepository() *InMemoryTrainingDateAttendeeRepository {
return &InMemoryTrainingDateAttendeeRepository{
attendees: make(map[TrainingDateAttendeeID]TrainingDateAttendee),
dateToAttendees: make(map[TrainingDateID][]TrainingDateAttendeeID),
func NewInMemoryAttendeeRepository() *InMemoryAttendeeRepository {
return &InMemoryAttendeeRepository{
attendees: make(map[AttendeeID]Attendee),
dateToAttendees: make(map[DateID][]AttendeeID),
ai: 1,
}
}
func (r *InMemoryTrainingDateAttendeeRepository) Create(trainingDateID TrainingDateID, attendee *TrainingDateAttendee) error {
func (r *InMemoryAttendeeRepository) Create(trainingDateID DateID, attendee *Attendee) error {
r.lock.Lock()
defer r.lock.Unlock()
@ -212,7 +212,7 @@ func (r *InMemoryTrainingDateAttendeeRepository) Create(trainingDateID TrainingD
return nil
}
func (r *InMemoryTrainingDateAttendeeRepository) FindByID(id TrainingDateAttendeeID) (*TrainingDateAttendee, error) {
func (r *InMemoryAttendeeRepository) FindByID(id AttendeeID) (*Attendee, error) {
r.lock.RLock()
defer r.lock.RUnlock()
@ -223,11 +223,11 @@ func (r *InMemoryTrainingDateAttendeeRepository) FindByID(id TrainingDateAttende
return &attendee, nil
}
func (r *InMemoryTrainingDateAttendeeRepository) FindAll() ([]TrainingDateAttendee, error) {
func (r *InMemoryAttendeeRepository) FindAll() ([]Attendee, error) {
r.lock.RLock()
defer r.lock.RUnlock()
attendees := make([]TrainingDateAttendee, len(r.attendees))
attendees := make([]Attendee, len(r.attendees))
for _, attendee := range r.attendees {
attendees = append(attendees, attendee)
}
@ -235,11 +235,11 @@ func (r *InMemoryTrainingDateAttendeeRepository) FindAll() ([]TrainingDateAttend
return attendees, nil
}
func (r *InMemoryTrainingDateAttendeeRepository) FindAllByTrainingDateID(trainingDateID TrainingDateID) ([]TrainingDateAttendee, error) {
func (r *InMemoryAttendeeRepository) FindAllByTrainingDateID(trainingDateID DateID) ([]Attendee, error) {
r.lock.RLock()
defer r.lock.RUnlock()
attendees := make([]TrainingDateAttendee, 0)
attendees := make([]Attendee, 0)
for _, id := range r.dateToAttendees[trainingDateID] {
attendees = append(attendees, r.attendees[id])
}
@ -247,7 +247,7 @@ func (r *InMemoryTrainingDateAttendeeRepository) FindAllByTrainingDateID(trainin
return attendees, nil
}
func (r *InMemoryTrainingDateAttendeeRepository) Update(attendee *TrainingDateAttendee) error {
func (r *InMemoryAttendeeRepository) Update(attendee *Attendee) error {
r.lock.Lock()
defer r.lock.Unlock()
@ -257,7 +257,7 @@ func (r *InMemoryTrainingDateAttendeeRepository) Update(attendee *TrainingDateAt
return nil
}
func (r *InMemoryTrainingDateAttendeeRepository) Delete(id TrainingDateAttendeeID) error {
func (r *InMemoryAttendeeRepository) Delete(id AttendeeID) error {
r.lock.Lock()
defer r.lock.Unlock()

View file

@ -6,35 +6,35 @@ import (
"time"
)
type TrainingID = int
type ID = int
type Training struct {
ID TrainingID
ID ID
Name string
Days int8
Description string
Pricing []TrainingPrice `db:"-"`
Pricing []Price `db:"-"`
}
type TrainingPrice struct {
type Price struct {
Amount decimal.Decimal
Currency money.Currency
Type TrainingPriceType
Type PriceType
}
type TrainingPriceType string
type PriceType string
const (
OpenTrainingPrice TrainingPriceType = "OPEN"
CorporateTrainingPrice TrainingPriceType = "CORPORATE"
OpenTrainingPrice PriceType = "OPEN"
CorporateTrainingPrice PriceType = "CORPORATE"
)
type TrainingDateID = int
type DateID = int
type TrainingDate struct {
trainingID TrainingID
type Date struct {
trainingID ID
ID TrainingDateID
ID DateID
Date time.Time
StartTime time.Time
Days int8
@ -46,12 +46,12 @@ type TrainingDate struct {
PriceCurrency money.Currency `db:"price_currency"`
}
type TrainingDateAttendeeID = int
type AttendeeID = int
type TrainingDateAttendee struct {
trainingDateID TrainingDateID
type Attendee struct {
trainingDateID DateID
ID TrainingDateAttendeeID
ID AttendeeID
Name string
Email string
Phone string

View file

@ -66,7 +66,7 @@ func (r *PostgresTrainingRepository) Create(training *Training) error {
return nil
}
func (r *PostgresTrainingRepository) FindByID(id TrainingID) (*Training, error) {
func (r *PostgresTrainingRepository) FindByID(id ID) (*Training, error) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
@ -91,12 +91,12 @@ func (r *PostgresTrainingRepository) FindByID(id TrainingID) (*Training, error)
}
defer rows.Close()
training.Pricing = make([]TrainingPrice, 0)
training.Pricing, err = pgx.CollectRows[TrainingPrice](rows, func(row pgx.CollectableRow) (TrainingPrice, error) {
var price TrainingPrice
training.Pricing = make([]Price, 0)
training.Pricing, err = pgx.CollectRows[Price](rows, func(row pgx.CollectableRow) (Price, error) {
var price Price
err := row.Scan(&price.Amount, &price.Currency, &price.Type)
if err != nil {
return TrainingPrice{}, err
return Price{}, err
}
return price, nil
})
@ -132,7 +132,7 @@ func (r *PostgresTrainingRepository) FindAll() ([]Training, error) {
return Training{}, queryErr
}
training.Pricing, scanErr = pgx.CollectRows(priceRows, pgx.RowToStructByName[TrainingPrice])
training.Pricing, scanErr = pgx.CollectRows(priceRows, pgx.RowToStructByName[Price])
if scanErr != nil {
return Training{}, scanErr
}
@ -198,7 +198,7 @@ func (r *PostgresTrainingRepository) Update(training *Training) error {
return nil
}
func (r *PostgresTrainingRepository) Delete(id TrainingID) error {
func (r *PostgresTrainingRepository) Delete(id ID) error {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
@ -233,15 +233,15 @@ func (r *PostgresTrainingRepository) Delete(id TrainingID) error {
return nil
}
type PostgresTrainingDateRepository struct {
type PostgresDateRepository struct {
pg *pgxpool.Pool
}
func NewPostgresTrainingDateRepository(pg *pgxpool.Pool) *PostgresTrainingDateRepository {
return &PostgresTrainingDateRepository{pg: pg}
func NewPostgresDateRepository(pg *pgxpool.Pool) *PostgresDateRepository {
return &PostgresDateRepository{pg: pg}
}
func (r *PostgresTrainingDateRepository) Create(trainingID TrainingID, trainingDate *TrainingDate) error {
func (r *PostgresDateRepository) Create(trainingID ID, trainingDate *Date) error {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
@ -266,11 +266,11 @@ func (r *PostgresTrainingDateRepository) Create(trainingID TrainingID, trainingD
return nil
}
func (r *PostgresTrainingDateRepository) FindByID(id TrainingDateID) (*TrainingDate, error) {
func (r *PostgresDateRepository) FindByID(id DateID) (*Date, error) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
var trainingDate TrainingDate
var trainingDate Date
err := r.pg.QueryRow(ctx, `SELECT * FROM training.dates WHERE id = $1`, id).
Scan(
&trainingDate.ID,
@ -292,7 +292,7 @@ func (r *PostgresTrainingDateRepository) FindByID(id TrainingDateID) (*TrainingD
return &trainingDate, nil
}
func (r *PostgresTrainingDateRepository) FindAll() ([]TrainingDate, error) {
func (r *PostgresDateRepository) FindAll() ([]Date, error) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
@ -302,9 +302,9 @@ func (r *PostgresTrainingDateRepository) FindAll() ([]TrainingDate, error) {
}
defer rows.Close()
var trainingDates []TrainingDate
var trainingDates []Date
for rows.Next() {
var trainingDate TrainingDate
var trainingDate Date
err := rows.Scan(
&trainingDate.ID,
&trainingDate.trainingID,
@ -328,7 +328,7 @@ func (r *PostgresTrainingDateRepository) FindAll() ([]TrainingDate, error) {
return trainingDates, nil
}
func (r *PostgresTrainingDateRepository) FindAllByTrainingID(trainingID TrainingID) ([]TrainingDate, error) {
func (r *PostgresDateRepository) FindAllByTrainingID(trainingID ID) ([]Date, error) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
@ -338,9 +338,9 @@ func (r *PostgresTrainingDateRepository) FindAllByTrainingID(trainingID Training
}
defer rows.Close()
var trainingDates []TrainingDate
var trainingDates []Date
for rows.Next() {
var trainingDate TrainingDate
var trainingDate Date
err := rows.Scan(
&trainingDate.ID,
&trainingDate.trainingID,
@ -364,7 +364,7 @@ func (r *PostgresTrainingDateRepository) FindAllByTrainingID(trainingID Training
return trainingDates, nil
}
func (r *PostgresTrainingDateRepository) FindUpcomingByTrainingID(trainingID TrainingID) ([]TrainingDate, error) {
func (r *PostgresDateRepository) FindUpcomingByTrainingID(trainingID ID) ([]Date, error) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
@ -377,9 +377,9 @@ func (r *PostgresTrainingDateRepository) FindUpcomingByTrainingID(trainingID Tra
}
defer rows.Close()
var trainingDates []TrainingDate
var trainingDates []Date
for rows.Next() {
var trainingDate TrainingDate
var trainingDate Date
err := rows.Scan(
&trainingDate.ID,
&trainingDate.trainingID,
@ -403,7 +403,7 @@ func (r *PostgresTrainingDateRepository) FindUpcomingByTrainingID(trainingID Tra
return trainingDates, nil
}
func (r *PostgresTrainingDateRepository) Update(trainingDate *TrainingDate) error {
func (r *PostgresDateRepository) Update(trainingDate *Date) error {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
@ -419,7 +419,7 @@ func (r *PostgresTrainingDateRepository) Update(trainingDate *TrainingDate) erro
return nil
}
func (r *PostgresTrainingDateRepository) Delete(id TrainingDateID) error {
func (r *PostgresDateRepository) Delete(id DateID) error {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
@ -431,20 +431,20 @@ func (r *PostgresTrainingDateRepository) Delete(id TrainingDateID) error {
return nil
}
type PostgresTrainingDateAttendeeRepository struct {
type PostgresAttendeeRepository struct {
pg *pgxpool.Pool
}
func NewPostgresTrainingDateAttendeeRepository(pg *pgxpool.Pool) *PostgresTrainingDateAttendeeRepository {
return &PostgresTrainingDateAttendeeRepository{pg: pg}
func NewPostgresAttendeeRepository(pg *pgxpool.Pool) *PostgresAttendeeRepository {
return &PostgresAttendeeRepository{pg: pg}
}
func (r *PostgresTrainingDateAttendeeRepository) Create(trainingDateID TrainingDateID, attendee *TrainingDateAttendee) error {
func (r *PostgresAttendeeRepository) Create(trainingDateID DateID, attendee *Attendee) error {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
err := r.pg.QueryRow(ctx, `
INSERT INTO training.date_attendees (date_id, name, email, phone, company, position, is_student, has_paid, has_attended, bill_amount, bill_currency)
INSERT INTO training.attendees (date_id, name, email, phone, company, position, is_student, has_paid, has_attended, bill_amount, bill_currency)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)
RETURNING id
`, trainingDateID, attendee.Name, attendee.Email, attendee.Phone, attendee.Company, attendee.Position, attendee.IsStudent, attendee.HasPaid, attendee.HasAttended, attendee.BillAmount, attendee.BillCurrency).
@ -456,14 +456,14 @@ func (r *PostgresTrainingDateAttendeeRepository) Create(trainingDateID TrainingD
return nil
}
func (r *PostgresTrainingDateAttendeeRepository) FindByID(id TrainingDateAttendeeID) (*TrainingDateAttendee, error) {
func (r *PostgresAttendeeRepository) FindByID(id AttendeeID) (*Attendee, error) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
var attendee TrainingDateAttendee
var attendee Attendee
err := r.pg.QueryRow(ctx, `
SELECT id, date_id, name, email, phone, company, position, is_student, has_paid, has_attended, bill_amount, bill_currency
FROM training.date_attendees
FROM training.attendees
WHERE id = $1
`, id).Scan(&attendee.ID, &attendee.trainingDateID, &attendee.Name, &attendee.Email, &attendee.Phone, &attendee.Company, &attendee.Position, &attendee.IsStudent, &attendee.HasPaid, &attendee.HasAttended, &attendee.BillAmount, &attendee.BillCurrency)
if err != nil {
@ -473,22 +473,22 @@ func (r *PostgresTrainingDateAttendeeRepository) FindByID(id TrainingDateAttende
return &attendee, nil
}
func (r *PostgresTrainingDateAttendeeRepository) FindAll() ([]TrainingDateAttendee, error) {
func (r *PostgresAttendeeRepository) FindAll() ([]Attendee, error) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
rows, err := r.pg.Query(ctx, `
SELECT id, date_id, name, email, phone, company, position, is_student, has_paid, has_attended, bill_amount, bill_currency
FROM training.date_attendees
FROM training.attendees
`)
if err != nil {
return nil, err
}
defer rows.Close()
var attendees []TrainingDateAttendee
var attendees []Attendee
for rows.Next() {
var attendee TrainingDateAttendee
var attendee Attendee
err := rows.Scan(&attendee.ID, &attendee.trainingDateID, &attendee.Name, &attendee.Email, &attendee.Phone, &attendee.Company, &attendee.Position, &attendee.IsStudent, &attendee.HasPaid, &attendee.HasAttended, &attendee.BillAmount, &attendee.BillCurrency)
if err != nil {
return nil, err
@ -500,13 +500,13 @@ func (r *PostgresTrainingDateAttendeeRepository) FindAll() ([]TrainingDateAttend
return attendees, nil
}
func (r *PostgresTrainingDateAttendeeRepository) FindAllByTrainingDateID(trainingDateID TrainingDateID) ([]TrainingDateAttendee, error) {
func (r *PostgresAttendeeRepository) FindAllByTrainingDateID(trainingDateID DateID) ([]Attendee, error) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
rows, err := r.pg.Query(ctx, `
SELECT id, date_id, name, email, phone, company, position, is_student, has_paid, has_attended, bill_amount, bill_currency
FROM training.date_attendees
FROM training.attendees
WHERE date_id = $1
`, trainingDateID)
if err != nil {
@ -514,9 +514,9 @@ func (r *PostgresTrainingDateAttendeeRepository) FindAllByTrainingDateID(trainin
}
defer rows.Close()
var attendees []TrainingDateAttendee
var attendees []Attendee
for rows.Next() {
var attendee TrainingDateAttendee
var attendee Attendee
err := rows.Scan(&attendee.ID, &attendee.trainingDateID, &attendee.Name, &attendee.Email, &attendee.Phone, &attendee.Company, &attendee.Position, &attendee.IsStudent, &attendee.HasPaid, &attendee.HasAttended, &attendee.BillAmount, &attendee.BillCurrency)
if err != nil {
return nil, err
@ -528,12 +528,12 @@ func (r *PostgresTrainingDateAttendeeRepository) FindAllByTrainingDateID(trainin
return attendees, nil
}
func (r *PostgresTrainingDateAttendeeRepository) Update(attendee *TrainingDateAttendee) error {
func (r *PostgresAttendeeRepository) Update(attendee *Attendee) error {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
_, err := r.pg.Exec(ctx, `
UPDATE training.date_attendees
UPDATE training.attendees
SET name = $1, email = $2, phone = $3, company = $4, position = $5, is_student = $6, has_paid = $7, has_attended = $8, bill_amount = $9, bill_currency = $10
WHERE id = $10
`, attendee.Name, attendee.Email, attendee.Phone, attendee.Company, attendee.Position, attendee.IsStudent, attendee.HasPaid, attendee.HasAttended, attendee.BillAmount, attendee.BillCurrency, attendee.ID)
@ -544,11 +544,11 @@ func (r *PostgresTrainingDateAttendeeRepository) Update(attendee *TrainingDateAt
return nil
}
func (r *PostgresTrainingDateAttendeeRepository) Delete(id TrainingDateAttendeeID) error {
func (r *PostgresAttendeeRepository) Delete(id AttendeeID) error {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
_, err := r.pg.Exec(ctx, `DELETE FROM training.date_attendees WHERE id = $1`, id)
_, err := r.pg.Exec(ctx, `DELETE FROM training.attendees WHERE id = $1`, id)
if err != nil {
return err
}

View file

@ -1,28 +1,28 @@
package training
type TrainingRepository interface {
type Repository interface {
Create(training *Training) error
FindByID(id TrainingID) (*Training, error)
FindByID(id ID) (*Training, error)
FindAll() ([]Training, error)
Update(training *Training) error
Delete(id TrainingID) error
Delete(id ID) 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 DateRepository interface {
Create(trainingID ID, trainingDate *Date) error
FindByID(id DateID) (*Date, error)
FindAll() ([]Date, error)
FindAllByTrainingID(trainingID ID) ([]Date, error)
FindUpcomingByTrainingID(trainingID ID) ([]Date, error)
Update(trainingDate *Date) error
Delete(id DateID) 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
type AttendeeRepository interface {
Create(trainingDateID DateID, attendee *Attendee) error
FindByID(id AttendeeID) (*Attendee, error)
FindAll() ([]Attendee, error)
FindAllByTrainingDateID(trainingDateID DateID) ([]Attendee, error)
Update(attendee *Attendee) error
Delete(id AttendeeID) error
}