resource

package
v0.0.0-...-5c5c951 Latest Latest
Warning

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

Go to latest
Published: Mar 11, 2023 License: AGPL-3.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 Class

type Class struct {
	ID uint `json:"id"`

	Name        string `json:"name"`
	CourseName  string `json:"course_name"`
	Description string `json:"description"`

	Managers    []User              `json:"managers"`
	Students    []User              `json:"students"`
	ProblemSets []ProblemSetSummary `json:"problem_sets"`
}

func GetClass

func GetClass(class *models.Class) *Class

func GetClassSlice

func GetClassSlice(classes []models.Class) (c []Class)

type ClassDetail

type ClassDetail struct {
	ID uint `json:"id"`

	Name        string `json:"name"`
	CourseName  string `json:"course_name"`
	Description string `json:"description"`
	InviteCode  string `json:"invite_code"`

	Managers    []User              `json:"managers"`
	Students    []User              `json:"students"`
	ProblemSets []ProblemSetSummary `json:"problem_sets"`
}

func GetClassDetail

func GetClassDetail(class *models.Class) *ClassDetail

type Grade

type Grade struct {
	ID uint `json:"id"`

	UserID       uint `json:"user_id"`
	ProblemSetID uint `json:"problem_set_id"`

	Detail string `json:"detail"`
	Total  uint   `json:"total"`
}

func GetGrade

func GetGrade(grade *models.Grade) *Grade

func GetGradeSlice

func GetGradeSlice(grades []*models.Grade) (g []Grade)

type Permission

type Permission struct {
	ID   uint   `gorm:"primaryKey" json:"id"`
	Name string `json:"name"`
}

func GetPermission

func GetPermission(perm *models.Permission) *Permission

type Problem

type Problem struct {
	ID                 uint   `json:"id"`
	Name               string `sql:"index" json:"name"`
	Description        string `json:"description"`
	AttachmentFileName string `json:"attachment_file_name"`

	MemoryLimit       uint64   `json:"memory_limit"` // Byte
	TimeLimit         uint     `json:"time_limit"`   // ms
	LanguageAllowed   []string `json:"language_allowed"`
	CompareScriptName string   `json:"compare_script_name"`

	TestCases []TestCase `json:"test_cases"`
	Tags      []Tag      `json:"tags"`
}

func GetProblem

func GetProblem(problem *models.Problem) *Problem

func GetProblemSlice

func GetProblemSlice(problems []*models.Problem) (profiles []Problem)

type ProblemForAdmin

type ProblemForAdmin struct {
	ID                 uint   `json:"id"`
	Name               string `sql:"index" json:"name"`
	Description        string `json:"description"`
	AttachmentFileName string `json:"attachment_file_name"`
	Public             bool   `json:"public"`
	Privacy            bool   `json:"privacy"`

	MemoryLimit       uint64   `json:"memory_limit"` // Byte
	TimeLimit         uint     `json:"time_limit"`   // ms
	LanguageAllowed   []string `json:"language_allowed"`
	BuildArg          string   `json:"build_arg"` // E.g.  O2=false
	CompareScriptName string   `json:"compare_script_name"`

	TestCases []TestCaseForAdmin `json:"test_cases"`
	Tags      []Tag              `json:"tags"`
}

func GetProblemForAdmin

func GetProblemForAdmin(problem *models.Problem) *ProblemForAdmin

func GetProblemForAdminSlice

func GetProblemForAdminSlice(problems []*models.Problem) (profiles []ProblemForAdmin)

type ProblemSet

type ProblemSet struct {
	ID uint `json:"id"`

	ClassID     uint   `json:"class_id"`
	Name        string `json:"name"`
	Description string `json:"description"`

	Problems []ProblemSummary `json:"problems"`

	StartTime time.Time `json:"start_time"`
	EndTime   time.Time `json:"end_time"`
}

func GetProblemSet

func GetProblemSet(problemSet *models.ProblemSet) *ProblemSet

func GetProblemSetSlice

func GetProblemSetSlice(problemSetSlice []*models.ProblemSet) (ps []ProblemSet)

type ProblemSetDetail

type ProblemSetDetail struct {
	ID uint `json:"id"`

	ClassID     uint   `json:"class_id"`
	Name        string `json:"name"`
	Description string `json:"description"`

	Problems []ProblemSummary `json:"problems"`

	StartTime time.Time `json:"start_time"`
	EndTime   time.Time `json:"end_time"`
}

func GetProblemSetDetail

func GetProblemSetDetail(problemSet *models.ProblemSet) *ProblemSetDetail

type ProblemSetSummary

type ProblemSetSummary struct {
	ID uint `json:"id"`

	ClassID     uint   `json:"class_id"`
	Name        string `json:"name"`
	Description string `json:"description"`

	StartTime time.Time `json:"start_time"`
	EndTime   time.Time `json:"end_time"`
}

func GetProblemSetSummary

func GetProblemSetSummary(problemSet *models.ProblemSet) *ProblemSetSummary

func GetProblemSetSummarySlice

func GetProblemSetSummarySlice(problemSetSlice []*models.ProblemSet) (ps []ProblemSetSummary)

type ProblemSetWithGrades

type ProblemSetWithGrades struct {
	ID uint `json:"id"`

	ClassID     uint   `json:"class_id"`
	Name        string `json:"name"`
	Description string `json:"description"`

	Problems []ProblemSummary `json:"problems"`
	Grades   []Grade          `json:"grades"`

	StartTime time.Time `json:"start_time"`
	EndTime   time.Time `json:"end_time"`
}

func GetProblemSetWithGrades

func GetProblemSetWithGrades(problemSet *models.ProblemSet) *ProblemSetWithGrades

type ProblemSummary

type ProblemSummary struct {
	ID                 uint   `json:"id"`
	Name               string `sql:"index" json:"name"`
	AttachmentFileName string `json:"attachment_file_name"`
	Passed             bool   `json:"passed"`

	MemoryLimit       uint64   `json:"memory_limit"` // Byte
	TimeLimit         uint     `json:"time_limit"`   // ms
	LanguageAllowed   []string `json:"language_allowed"`
	CompareScriptName string   `json:"compare_script_name"`
	Tags              []Tag    `json:"tags"`
}

func GetProblemSummary

func GetProblemSummary(problem *models.Problem, passed sql.NullBool) *ProblemSummary

func GetProblemSummarySlice

func GetProblemSummarySlice(problems []*models.Problem, passed []sql.NullBool) (summaries []ProblemSummary)

type ProblemSummaryForAdmin

type ProblemSummaryForAdmin struct {
	ID                 uint   `json:"id"`
	Name               string `sql:"index" json:"name"`
	AttachmentFileName string `json:"attachment_file_name"`
	Public             bool   `json:"public"`
	Privacy            bool   `json:"privacy"`
	Passed             bool   `json:"passed"`

	MemoryLimit       uint64   `json:"memory_limit"` // Byte
	TimeLimit         uint     `json:"time_limit"`   // ms
	LanguageAllowed   []string `json:"language_allowed"`
	BuildArg          string   `json:"build_arg"` // E.g.  O2=false
	CompareScriptName string   `json:"compare_script_name"`

	Tags []Tag `json:"tags"`
}

func GetProblemSummaryForAdmin

func GetProblemSummaryForAdmin(problem *models.Problem, passed sql.NullBool) *ProblemSummaryForAdmin

func GetProblemSummaryForAdminSlice

func GetProblemSummaryForAdminSlice(problems []*models.Problem, passed []sql.NullBool) (summaries []ProblemSummaryForAdmin)

type Role

type Role struct {
	ID          uint         `json:"id"`
	Name        string       `json:"name"`
	Target      *string      `json:"target"`
	Permissions []Permission `json:"permissions"`
	TargetID    uint         `json:"target_id"`
}

func GetRole

func GetRole(role *models.UserHasRole) *Role

func GetRoleSlice

func GetRoleSlice(roles []models.UserHasRole) (profiles []Role)

type Run

type Run struct {
	ID uint `json:"id"`

	UserID       uint  `json:"user_id"`
	ProblemID    uint  `json:"problem_id"`
	ProblemSetID uint  `json:"problem_set_id"`
	TestCaseID   uint  `json:"test_case_id"`
	Sample       bool  `json:"sample"`
	SubmissionID uint  `json:"submission_id"`
	Priority     uint8 `json:"priority"`

	Judged     bool   `json:"judged"`
	Status     string `json:"status"`      // AC WA TLE MLE OLE
	MemoryUsed uint   `json:"memory_used"` // Byte
	TimeUsed   uint   `json:"time_used"`   // ms

	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

func GetRun

func GetRun(run *models.Run) *Run

func GetRunSlice

func GetRunSlice(runs []models.Run) []Run

type Submission

type Submission struct {
	ID uint `json:"id"`

	UserID       uint   `json:"user_id"`
	User         *User  `json:"user"`
	ProblemID    uint   `json:"problem_id"`
	ProblemName  string `json:"problem_name"`
	ProblemSetID uint   `json:"problem_set_id"` // 0 means not in problem set
	Language     string `json:"language"`

	Judged bool   `json:"judged"`
	Score  uint   `json:"score"`
	Status string `json:"status"`

	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

func GetSubmission

func GetSubmission(submission *models.Submission) *Submission

func GetSubmissionSlice

func GetSubmissionSlice(submissions []models.Submission) []Submission

type SubmissionDetail

type SubmissionDetail struct {
	ID uint `json:"id"`

	UserID       uint   `json:"user_id"`
	User         *User  `json:"user"`
	ProblemID    uint   `json:"problem_id"`
	ProblemName  string `json:"problem_name"`
	ProblemSetID uint   `json:"problem_set_id"`
	Language     string `json:"language"`
	FileName     string `json:"file_name"`
	Priority     uint8  `json:"priority"`

	Judged bool   `json:"judged"`
	Score  uint   `json:"score"`
	Status string `json:"status"`

	Runs []Run `json:"runs"`

	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

func GetSubmissionDetail

func GetSubmissionDetail(submission *models.Submission) *SubmissionDetail

func GetSubmissionDetailSlice

func GetSubmissionDetailSlice(submissions []models.Submission) []SubmissionDetail

type Tag

type Tag struct {
	Name string
}

func (*Tag) Convert

func (t *Tag) Convert(tt *models.Tag)

func (*Tag) MarshalJSON

func (t *Tag) MarshalJSON() ([]byte, error)

func (*Tag) UnmarshalJSON

func (t *Tag) UnmarshalJSON(b []byte) error

type TestCase

type TestCase struct {
	ID uint `json:"id"`

	ProblemID uint `sql:"index" json:"problem_id"`
	Score     uint `json:"score"` // 0 for 平均分配
	Sample    bool `json:"sample"`
}

func GetTestCase

func GetTestCase(testCase *models.TestCase) *TestCase

type TestCaseForAdmin

type TestCaseForAdmin struct {
	ID uint `json:"id"`

	ProblemID uint `sql:"index" json:"problem_id"`
	Score     uint `json:"score"` // 0 for 平均分配
	Sample    bool `json:"sample"`

	InputFileName  string `json:"input_file_name"`
	OutputFileName string `json:"output_file_name"`
}

func GetTestCaseForAdmin

func GetTestCaseForAdmin(testCase *models.TestCase) *TestCaseForAdmin

type User

type User struct {
	ID       uint   `json:"id"`
	Username string `json:"username"`
	Nickname string `json:"nickname"`
	Email    string `json:"email"`
}

func GetUser

func GetUser(user *models.User) *User

func GetUserSlice

func GetUserSlice(users []*models.User) (profiles []User)

type UserForAdmin

type UserForAdmin struct {
	// ID is the user's id.
	ID uint `json:"id"`
	// Username is the user's username, usually the student ID if used in schools.
	Username string `json:"username"`
	// Nickname is the user's nickname, usually the student name if used in schools.
	Nickname string `json:"nickname"`
	// Email is the user's email.
	Email string `json:"email"`

	// Role is the user's role, and is used to obtain the permissions of a user.
	Roles []Role `json:"roles"`
}

@description UserForAdmin is a user with additional, credential data, only accessible by people has permission, @description e.g. admin can access to all user's credential data, and a user can access to his/her credential data.

func GetUserForAdmin

func GetUserForAdmin(user *models.User) *UserForAdmin

Jump to

Keyboard shortcuts

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