domain

package
v0.0.0-...-cd399ba Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 24, 2024 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Course

type Course struct {
	UUID uuid.UUID `db:"uuid" json:"uuid"`
	Code string    `db:"code" json:"code"`
	Name string    `db:"name" json:"name"`
}

type CourseClient

type CourseClient interface {
	CourseExists(ctx context.Context, courseUUID uuid.UUID) error
}

type DeletedSubscription

type DeletedSubscription struct {
	UUID      uuid.UUID `db:"uuid"       json:"uuid"`
	Reason    string    `db:"reason"     json:"reason"`
	DeletedAt time.Time `db:"deleted_at" json:"deleted_at"`
}

type Matrix

type Matrix struct {
	UUID *uuid.UUID `db:"uuid" json:"uuid"`
	Code *string    `db:"code" json:"code"`
	Name *string    `db:"name" json:"name"`
}

type MatrixClient

type MatrixClient interface {
	CourseMatrixExists(ctx context.Context, courseUUID uuid.UUID, matrixUUID uuid.UUID) error
}

type Service

type Service struct {
	// contains filtered or unexported fields
}

func NewService

func NewService(cfgs ...ServiceConfiguration) (*Service, error)

NewService creates a new domain Service instance.

func (*Service) CreateSubscription

func (s *Service) CreateSubscription(ctx context.Context, sub *Subscription) error

func (*Service) DeleteSubscription

func (s *Service) DeleteSubscription(_ context.Context, sub *DeletedSubscription) error

func (*Service) Subscription

func (s *Service) Subscription(_ context.Context, subscriptionUUID uuid.UUID) (Subscription, error)

func (*Service) Subscriptions

func (s *Service) Subscriptions(_ context.Context, filters *SubscriptionFilters) ([]Subscription, error)

func (*Service) UpdateSubscription

func (s *Service) UpdateSubscription(_ context.Context, sub *Subscription) error

type ServiceConfiguration

type ServiceConfiguration func(svc *Service) error

func WithCourseClient

func WithCourseClient(courses CourseClient) ServiceConfiguration

func WithLogger

func WithLogger(l log.Logger) ServiceConfiguration

WithLogger injects the logger to the domain Service.

func WithMatrixClient

func WithMatrixClient(matrices MatrixClient) ServiceConfiguration

func WithSubscriptionRepository

func WithSubscriptionRepository(sr SubscriptionRepository) ServiceConfiguration

WithSubscriptionRepository injects the subscription repository to the domain Service.

type ServiceInterface

type ServiceInterface interface {
	Subscription(ctx context.Context, subscriptionUUID uuid.UUID) (Subscription, error)
	Subscriptions(ctx context.Context, filters *SubscriptionFilters) ([]Subscription, error)
	CreateSubscription(ctx context.Context, subscription *Subscription) error
	UpdateSubscription(ctx context.Context, subscription *Subscription) error
	DeleteSubscription(ctx context.Context, subscription *DeletedSubscription) error
}

ServiceInterface defines the domains Service interface.

type Subscription

type Subscription struct {
	UUID       uuid.UUID  `db:"uuid"        json:"uuid"`
	UserUUID   uuid.UUID  `db:"user_uuid"   json:"user_uuid,omitempty"`
	Course     *Course    `db:"courses"     json:"course,omitempty"`
	CourseUUID *uuid.UUID `db:"course_uuid" json:"course_uuid,omitempty"`
	Matrix     *Matrix    `db:"matrices"    json:"matrix,omitempty"`
	MatrixUUID *uuid.UUID `db:"matrix_uuid" json:"matrix_uuid,omitempty"`
	Role       string     `db:"role"        json:"role"`
	Reason     *string    `db:"reason"      json:"reason,omitempty"`
	ExpiresAt  *time.Time `db:"expires_at"  json:"expires_at,omitempty"`
	CreatedAt  time.Time  `db:"created_at"  json:"created_at"`
	UpdatedAt  time.Time  `db:"updated_at"  json:"updated_at"`
}

type SubscriptionFilters

type SubscriptionFilters struct {
	CourseUUID uuid.UUID `json:"course_uuid,omitempty"`
	UserUUID   uuid.UUID `json:"user_uuid,omitempty"`
}

type SubscriptionRepository

type SubscriptionRepository interface {
	Subscription(subscriptionUUID uuid.UUID) (Subscription, error)
	Subscriptions() ([]Subscription, error)
	CreateSubscription(subscription *Subscription) error
	CreateSubscriptionWithoutMatrix(subscription *Subscription) error
	UpdateSubscription(subscription *Subscription) error
	DeleteSubscription(subscription *DeletedSubscription) error
	CourseSubscriptions(courseUUID uuid.UUID) ([]Subscription, error)
	UserSubscriptions(userUUID uuid.UUID) ([]Subscription, error)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL