repositories

package
v0.0.0-...-bde7e6f Latest Latest
Warning

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

Go to latest
Published: Jan 31, 2024 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ChallengeRepository

type ChallengeRepository interface {
	// CreateChallenge creates a new challenge.
	CreateChallenge(challenge *entities.Challenge) (*entities.Challenge, error)
	// UpdateChallenge updates a challenge.
	UpdateChallenge(challenge *entities.Challenge) error
	// DeleteChallenge deletes a challenge.
	DeleteChallenge(challenge *entities.Challenge) error
	// FindChallengeByID returns a challenge by given ID.
	FindChallengeByID(id uint) (challenge *entities.Challenge, err error)
	// AllChallenges returns all challenges.
	AllChallenges() (challenges []*entities.Challenge, err error)
	// AddTestcase adds a testcase to a challenge.
	AddTestcase(challenge *entities.Challenge, testcase *entities.ChallengeTestcase) (*entities.ChallengeTestcase, error)
	// UpdateTestcase updates a testcase.
	UpdateTestcase(testcase *entities.ChallengeTestcase) error
	// DeleteTestcase removes a testcase from a challenge.
	DeleteTestcase(testcase *entities.ChallengeTestcase) error
	// AllTestcases returns all testcases of a challenge.
	AllTestcases(challenge *entities.Challenge) (testcases []*entities.ChallengeTestcase, err error)
	// FindTestcaseByID returns a testcase by given ID.
	FindTestcaseByID(id uint) (testcase *entities.ChallengeTestcase, err error)
	// PaginationChallengesWithStatus returns all challenges with status.
	PaginationChallengesWithStatus(options *entities.ChallengePaginationOptions) (result *entities.PaginationResult[*entities.ChallengeExtended], err error)
	// UpdateChallengeWithTestcase updates a challenge with testcases.
	UpdateChallengeWithTestcase(challenge *entities.Challenge) error
	// CountAllChallengesByUser returns total challenges by given user.
	CountAllChallengesByUser(user *entities.User) (total int64, err error)
}

func NewChallengeRepository

func NewChallengeRepository(db *gorm.DB) ChallengeRepository

type SubmissionRepository

type SubmissionRepository interface {
	CreateSubmission(submission *entities.Submission) (*entities.Submission, error)
	DeleteSubmission(submission *entities.Submission) error
	GetSubmissionByID(submissionID uint) (*entities.Submission, error)
	GetSubmissionByUser(user *entities.User) ([]*entities.Submission, error)
	GetSubmissionByChallenge(challenge *entities.Challenge) ([]*entities.Submission, error)
	CreateSubmissionTestcase(submissionTestcase *entities.SubmissionTestcase) (*entities.SubmissionTestcase, error)
	GetSubmissionTestcaseBySubmission(submission *entities.Submission) ([]*entities.SubmissionTestcase, error)
	// CreateSubmissionWithTestcase(submission *entities.Submission, submissionTestcases []entities.SubmissionTestcase) (*entities.Submission, error)
	UpdateSubmission(submission *entities.Submission) (*entities.Submission, error)
	UpdateSubmissionTestcase(submissionTestcase *entities.SubmissionTestcase) (*entities.SubmissionTestcase, error)
	Pagination(options *entities.SubmissionPaginationOptions) (result *entities.PaginationResult[*entities.Submission], err error)
}

func NewSubmissionRepository

func NewSubmissionRepository(db *gorm.DB) SubmissionRepository

type UserRepository

type UserRepository interface {
	// FindUserByID returns a user by given ID.
	FindUserByID(id uint) (user *entities.User, err error)
	// FindUserByDisplayName returns a user by given display name.
	FindUserByDisplayName(displayName string) (user *entities.User, err error)
	// FindUserByEmail returns a user by given email.
	FindUserByEmail(email string) (user *entities.User, err error)
	// CreateUser creates a new user.
	CreateUser(user *entities.User) (*entities.User, error)
	// UpdateUser updates a user.
	UpdateUser(user *entities.User) error
	// DeleteUser deletes a user.
	DeleteUser(user *entities.User) error
	// Pagination returns a list of users by given page and limit.
	Pagination(options *entities.PaginationOptions) (result *entities.PaginationResult[*entities.User], err error)
}

func NewUserRepository

func NewUserRepository(db *gorm.DB) UserRepository

Jump to

Keyboard shortcuts

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