1
0
Fork 0

feat: add pkg/training/ with types, structs, and repository interfaces

This commit is contained in:
Vojtěch Mareš 2024-04-27 21:31:04 +02:00
parent afe0f18523
commit 00158e89fe
Signed by: vojtech.mares
GPG key ID: C6827B976F17240D
9 changed files with 113 additions and 0 deletions

17
pkg/training/attendee.go Normal file
View file

@ -0,0 +1,17 @@
package training
import "github.com/google/uuid"
type AttendeeID uuid.UUID
type Attendee struct {
ID AttendeeID
DateID DateID
Name string
Email string
Company string
Role string
IsStudent bool
HasAttended bool
HasPaid bool
}

View file

@ -0,0 +1,13 @@
package training
type AttendeeRepository interface {
Find(AttendeeID) (*Attendee, error)
FindAll() ([]Attendee, error)
FindAllForDate(DateID) ([]Attendee, error)
CountForDate(DateID) (int, error)
Save(*Attendee) error
Update(*Attendee) error
UpdateAttendance(AttendeeID, bool) error
UpdatePayment(AttendeeID, bool) error
Delete(AttendeeID) error
}

22
pkg/training/date.go Normal file
View file

@ -0,0 +1,22 @@
package training
import (
"time"
"github.com/google/uuid"
)
type DateID uuid.UUID
type Date struct {
ID DateID
TrainingID ID
Date time.Time
StartTime time.Time
Days int8
Price Price
IsOnline bool
Location string // could be empty (null) for example: Prague, Brno, London, ...
Address string // could be empty (null)
Capacity int8
}

View file

@ -0,0 +1,11 @@
package training
type DateRepository interface {
Get(DateID) (*Date, error)
FindAll() ([]Date, error)
FindAllForTraining(ID) ([]Date, error)
Save(*Date) error
Update(*Date) error
Delete(DateID) error
IsFull(DateID) (bool, error)
}

14
pkg/training/feedback.go Normal file
View file

@ -0,0 +1,14 @@
package training
import "github.com/google/uuid"
type FeedbackID uuid.UUID
type Feedback struct {
ID FeedbackID
AttendeeID AttendeeID
Rating int
Comment string
IsAnonymous bool
IsSharingAllowed bool
}

View file

@ -0,0 +1,9 @@
package training
type FeedbackRepository interface {
Get(FeedbackID) (*Feedback, error)
FindAll() ([]Feedback, error)
Save(*Feedback) error
Update(*Feedback) error
Delete(FeedbackID) error
}

3
pkg/training/price.go Normal file
View file

@ -0,0 +1,3 @@
package training
type Price float32

View file

@ -0,0 +1,9 @@
package training
type Repository interface {
Save(*Training) error
Get(ID) (*Training, error)
Update(*Training) error
Delete(ID) error
FindAll() ([]Training, error)
}

15
pkg/training/training.go Normal file
View file

@ -0,0 +1,15 @@
package training
import (
"github.com/google/uuid"
)
type ID uuid.UUID
type Training struct {
ID ID
Days int8
Name string
Description string
Price Price
}