app

package
v1.1.7 Latest Latest
Warning

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

Go to latest
Published: Sep 10, 2023 License: AGPL-3.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type App

type App struct {
	Cfg configs.Config

	Store sessions.Store

	Errors []error
	Events []domain.Event
	// contains filtered or unexported fields
}

func New

func New(
	cfg configs.Config,
	logger *logger.Logger,
	repo Repository,
	store sessions.Store,
) (*App, error)

func (*App) AddError

func (a *App) AddError(err error)

func (*App) AddEvent

func (a *App) AddEvent(name string, start time.Time)

func (*App) AddResponse

func (a *App) AddResponse(ctx context.Context, take *domain.Take, item *domain.Item) (*domain.Take, *domain.Response, error)

func (*App) AuthenticateGothUser

func (a *App) AuthenticateGothUser(ctx context.Context, gu *goth.User) (*domain.User, error)

AuthenticateGothUser creates new user or returns existsing one. It relies on goth authetication to verify user has access to that profile and thus doesn't check password.

func (*App) BeginTest

func (a *App) BeginTest(ctx context.Context, test *domain.Test) (*domain.Test, error)

func (*App) CreateAnonymousUser

func (a *App) CreateAnonymousUser(ctx context.Context) (*domain.User, error)

func (*App) CreateOrUpdateTagFromArgs

func (a *App) CreateOrUpdateTagFromArgs(ctx context.Context, args domain.CreateTagArgs) error

func (*App) CreateOrUpdateTestFromArgs

func (a *App) CreateOrUpdateTestFromArgs(ctx context.Context, args domain.CreateTestArgs) error

func (*App) CreateOrUpdateUserSession

func (a *App) CreateOrUpdateUserSession(req *http.Request, ls live.Session, user *domain.User, setActiveStatus bool) (*domain.UserSession, error)

func (*App) CreateOrUpdateUserSessionWithSID

func (a *App) CreateOrUpdateUserSessionWithSID(req *http.Request, sid string, user *domain.User, setActiveStatus bool) (*domain.UserSession, error)

func (*App) CreateUser

func (a *App) CreateUser(ctx context.Context, u *domain.User) (*domain.User, error)

func (*App) CreateUserFromGoth

func (a *App) CreateUserFromGoth(ctx context.Context, gu *goth.User) (*domain.User, error)

func (*App) EndTest

func (a *App) EndTest(ctx context.Context, test *domain.Test) (*domain.Test, error)

func (*App) GetSystemSummary

func (a *App) GetSystemSummary(ctx context.Context) (*domain.SystemSummary, error)

func (*App) GetTags

func (a *App) GetTags(ctx context.Context, locale string) ([]*domain.Tag, error)

func (*App) GetTake

func (a *App) GetTake(ctx context.Context, takeID uuid.UUID) (*domain.Take, error)

func (*App) GetTestByCode

func (a *App) GetTestByCode(ctx context.Context, code string, locale string) (*domain.Test, error)

func (*App) GetTestsForLocale

func (a *App) GetTestsForLocale(ctx context.Context, args *domain.QueryTestsArgs) ([]*domain.Test, error)

func (*App) GetUserByEmail

func (a *App) GetUserByEmail(ctx context.Context, email string) (*domain.User, error)

func (*App) GetUserBySession

func (a *App) GetUserBySession(req *http.Request, ls live.Session) (*domain.User, error)

func (*App) IsDev

func (a *App) IsDev() bool

func (*App) LiveSessionID

func (a *App) LiveSessionID(req *http.Request) (string, error)

func (*App) LiveSessionIDFromSession

func (a *App) LiveSessionIDFromSession(ls live.Session) (string, error)

func (*App) LogoutUser

func (a *App) LogoutUser(ctx context.Context) error

func (*App) PrepareTest

func (a *App) PrepareTest(ctx context.Context, code string, locale string, args *domain.PrepareTestArgs) (*domain.Test, error)

func (*App) PrepareTestResult

func (a *App) PrepareTestResult(ctx context.Context, test *domain.Test, locale string, overrideMethod string) (*domain.Test, error)

func (*App) ResetSession

func (a *App) ResetSession(res http.ResponseWriter, req *http.Request) error

func (*App) SaveTestResults

func (a *App) SaveTestResults(ctx context.Context, test *domain.Test) error

func (*App) UpdateNorms

func (a *App) UpdateNorms(ctx context.Context) (errs error)

func (*App) UpdateSystemSummary

func (a *App) UpdateSystemSummary(ctx context.Context) error

func (*App) UpdateTakeMark

func (a *App) UpdateTakeMark(ctx context.Context, takeID uuid.UUID, mark int) error

func (*App) UpdateTestDurations

func (a *App) UpdateTestDurations(ctx context.Context) error

func (*App) UpdateTestMarks

func (a *App) UpdateTestMarks(ctx context.Context) error

func (*App) UpdateUser

func (a *App) UpdateUser(ctx context.Context, user *domain.User) (*domain.User, error)

func (*App) ValidateUserPassword

func (a *App) ValidateUserPassword(ctx context.Context, u *domain.User) (bool, error)

type Repository

type Repository interface {
	// user
	IfEmailRegistered(context.Context, string) (bool, error)
	GetUserByEmail(context.Context, string) (*domain.User, error)
	GetUserByID(context.Context, uuid.UUID) (*domain.User, error)
	CreateUser(context.Context, *domain.User) (*domain.User, error)
	UpdateUser(ctx context.Context, user *domain.User) (*domain.User, error)

	// user session
	IfSessionRegistered(context.Context, *domain.UserSession) (bool, error)
	CreateOrUpdateUserSession(context.Context, *domain.UserSession) (*domain.UserSession, error)
	UpdateUserSessionLastActivityBySID(context.Context, string) error
	GetUserBySession(context.Context, *domain.UserSession) (*domain.User, error)

	// test
	CreateOrUpdateTestFromArgs(context.Context, *domain.CreateTestArgs) error
	GetTests(ctx context.Context, args *domain.QueryTestsArgs) ([]*domain.Test, error)
	GetTestByCode(ctx context.Context, code string, locale string) (*domain.Test, error)
	GetTakeData(ctx context.Context, take *domain.Take, locale string) (*domain.Test, error)
	GetDataForMarkCalculation(ctx context.Context) ([]*domain.Test, error)
	GetDataForDurationCalculation(ctx context.Context) ([]*domain.Test, error)
	UpdateTestMark(ctx context.Context, testID uuid.UUID, mark float64) error
	UpdateTestDuration(ctx context.Context, testID uuid.UUID, duration time.Duration) error

	// take
	GetTake(ctx context.Context, takeID uuid.UUID) (*domain.Take, error)
	CreateTake(ctx context.Context, take *domain.Take) (*domain.Take, error)
	UpdateTake(ctx context.Context, take *domain.Take) (*domain.Take, error)
	UpdateTakeMark(ctx context.Context, takeID uuid.UUID, mark int) error

	// response
	AddOrUpdateResponse(ctx context.Context, takeID uuid.UUID, itm *domain.Item) (*domain.Response, error)

	// sample
	CreateOrUpdateSample(ctx context.Context, sample *domain.Sample) (*domain.Sample, error)
	GetSamples(ctx context.Context) ([]*domain.Sample, error)

	// norm
	CreateOrUpdateNorm(ctx context.Context, norm *domain.Norm) (*domain.Norm, error)
	GetDataForNormCalculation(ctx context.Context, criteria domain.SampleCriteria) ([]*domain.NormCalculationData, error)
	GetScaleNorms(ctx context.Context, scaleID uuid.UUID, sampleIDs []uuid.UUID) ([]*domain.Norm, error)

	// result
	CreateOrUpdateResult(ctx context.Context, result *domain.Result) (*domain.Result, error)

	// for system summary
	GetUserCount(ctx context.Context) (int, error)
	FinishedTakeCount(ctx context.Context) (int, error)
	TestCount(ctx context.Context) (int, error)
	ResponseCount(ctx context.Context) (int, error)

	// tag
	CreateOrUpdateTagFromArgs(ctx context.Context, args *domain.CreateTagArgs) error
	GetTagsByCodes(ctx context.Context, locale string, codes ...string) ([]*domain.Tag, error)
	GetTagIDsByCodes(ctx context.Context, codes ...string) ([]uuid.UUID, error)
}

Jump to

Keyboard shortcuts

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