diff --git a/Database.md b/Database.md index 6814e2c..54b8f51 100644 --- a/Database.md +++ b/Database.md @@ -162,38 +162,39 @@ ReferenceExerciseSolution contains additional data for reference solution than n ## ReferenceSolutionEvaluation -- _referenceSolution_ -- solution to which this evaluation belongs to +ReferenceSolutionEvaluation contains additional data for reference solution evalution than normal evaluation created on student solution evaluation. + +- _referenceSolution_ -- key to solution which this evaluation belongs to - _hwGroup_ -- hardware group which was used during execution on worker -- _resultsUrl_ -- filserver address from which results of reference evaluation can be internally accessed -- _evaluation_ -- associated general evaluation +- _resultsUrl_ -- filserver address from where results of reference evaluation can be internally accessed +- _evaluation_ -- associated general evaluation key ## ReportedErrors -All errors which were reported to api from backend are sent to administrator of system and also stored in this table. +All errors which were reported to api from backend are sent as emails to administrator of system and also stored in this entity. - _type_ -- textual description of error type -- _recipients_ -- list of email addresses to which error was sent +- _recipients_ -- list of comma separated email addresses to which error was sent - _subject_ -- subject as it was sent in email -- _sentAt_ -- datetime when email with error report was sent +- _sentAt_ -- date and time when email with error report was sent - _description_ -- message as it was sent in email ## Resource -- _id_ -- textual identification of resource -- _permissions_ -- permissions associated with this resource +Resource entity represent different resources used in ReCodEx system. These resources can be used in presenter actions for access restrictions. Resource contain list of permissions in one-to-many relation, but from database perspective this table has only one column with the resource name. ## Role -Roles serves for distinction of what user can do or cannot do. Thus every user has to have assigned some particular role from which decisions about access rights are made. +Roles serves for distinction of what user can or cannot do. Thus every user has to have assigned some particular role from which decisions about access rights are made. -- _id_ -- role textual identification +- _id_ -- textual identification of the role - _parentRole_ -- reference to parent role -- _childRoles_ -- array of roles which have this one as parent -- _permissions_ -- permissions which are connected to this role +- _childRoles_ -- array of roles which have this one as parent; not actual database column, relation stored as _parentRole_ column +- _permissions_ -- permissions which are connected to this role; not actual database column, many-to-one relation stored in Permission entity ## RuntimeEnvironment -Stores information about supported environments which can be used for evaluation on workers. +Stores information about supported environments which can be used for evaluation on workers. On student submit the correct environment is determined by extensions of uploaded files. - _name_ -- human readable name of runtime environment - _language_ -- language which can be used in this environment @@ -203,45 +204,50 @@ Stores information about supported environments which can be used for evaluation ## Solution -- _user_ -- user to whom this solution belongs to -- _files_ -- exercise solution files which user uploaded and are associated with solution -- _solutionRuntimeConfig_ -- runtime configuration which was used during execution on worker +Solution is general entity which is used for all types of evaluations, including students and reference submissions. This entity can be shared between multiple submissions (for example resubmit by supervisor). + +- _user_ -- user key to whom this solution belongs to +- _files_ -- exercise solution files which user uploaded and are associated with solution; not actual database column, one-to-many relation is stored by each file +- _solutionRuntimeConfig_ -- runtime configuration key which was used during execution on worker - _evaluated_ -- true if solution was evaluated and results were processed ## SolutionEvaluation -- _evaluatedAt_ -- datetime of evaluation creation +SolutionEvaluation entity represents evaluation of student or reference solution. It contains parsed and processed data received from backend. + +- _evaluatedAt_ -- date and time of evaluation creation - _initFailed_ -- if true then one of the initiation tasks failed thus solution cannot be even compiled -- _score_ -- overall score of user solution +- _score_ -- overall score of user solution (percentual correctness from 0 to 1) - _points_ -- points which were assigned to user for this solution -- _bonusPoints_ -- bonus points assigned by some of the supervisors +- _bonusPoints_ -- bonus points assigned by one of the supervisors - _isValid_ -- can be used to ban user solution of exercise due to various reasons - _evaluationFailed_ -- true if whole evaluation failed on worker -- _resultYml_ -- whole YAML file with evaluation results acquired indirectly from worker -- _testResults_ -- results of all tests associated with user solution +- _resultYml_ -- whole yaml file with evaluation results acquired from backend +- _testResults_ -- results of all tests associated with user solution; not actual database table, one-to-many relation is stored by TestResult entities ## SolutionFile -Parent of this entity is `UploadedFile`, only added field is solution to which this file is associated. - -- _solution_ -- associated solution to which file belongs to +SolutionFile entity is extension of UploadedFile entity, so they share one database table. Solution file has one additional column of associated solution key. ## SolutionRuntimeConfig +SolutionRuntimeConfig entity connects job configuration to runtime environment. This entity is backed up on every update, old version is set as _createdFrom_ key in the new version. On student submission one runtime config is chosen based on files extensions and corresponding job configuration is used for evaluation in the backend. + - _name_ -- human readable identificator of runtime configuration - _runtimeEnvironment_ -- corresponding runtime environment - _jobConfigFilePath_ -- path to job configuration which is stored at api server -- _createdAt_ -- datetime of entity creation -- _createdFrom_ -- parent solution runtime configuration from which this one was created +- _createdAt_ -- date and time of entity creation ## Submission -- _submittedAt_ -- datetime of submission creation -- _note_ -- user can provide note to his/hers exercise solution +Submission entity corresponds to student submit of assignment. It stores both information about submission and about subsequent evaluation. + +- _submittedAt_ -- date and time of submission creation +- _note_ -- user can provide note to exercise solution - _resultsUrl_ -- URL pointed to fileserver from which results of submission can be internally downloaded -- _assignment_ -- corresponding assignment to which submission belongs to -- _user_ -- user to whom submission belongs to +- _assignment_ -- corresponding assignment key to which submission belongs to +- _user_ -- key of user to whom submission belongs to - _submittedBy_ -- user who submitted solution of exercise, can be supervisor for instance - _solution_ -- corresponding solution - _asynchronous_ -- exercise solution was submitted asynchronously, this happens when supervisor or superadmin submit solution for particular user @@ -254,22 +260,22 @@ Logically queue of failed submissions which deserves further attention from admi - _type_ -- type of failure, can be for example _broker_reject_ or _evaluation_failure_ - _description_ -- description of failure which was provided by backend - _submission_ -- associated submission which failed -- _createdAt_ -- datetime of entity creation -- _resolvedAt_ -- datetime when failure was resolved +- _createdAt_ -- date and time of entity creation +- _resolvedAt_ -- date and time when failure was resolved - _resolutionNote_ -- user can provide description when failure is resolved ## TestResult -Represents result of one logical test from job configuration. +TestResult entity represents result of one logical test from job configuration. - _testName_ -- name of test which was stated in job configuration - _status_ -- overall status of test - _solutionEvaluation_ -- evaluation to which test result belongs - _score_ -- score which was assigned to test evaluation by judge - _memoryExceeded_ -- true if memory limit was exceeded -- _usedMemoryRatio_ -- float number from 0.0 to 1.0 which represents percentage of user solution memory usage against memory limit from configuration +- _usedMemoryRatio_ -- float number from 0 to 1 which represents percentage of user solution memory usage against memory limit from configuration - _timeExceeded_ -- true if time limit was exceeded -- _usedTimeRatio_ -- float number from 0.0 to 1.0 which represents percentage of user solution time usage against time limit from configuration +- _usedTimeRatio_ -- float number from 0 to 1 which represents percentage of user solution time usage against time limit from configuration - _exitCode_ -- exit code which whole test returns - _message_ -- provided only on non-zero exit code - _stats_ -- textual representation of whole information about evaluation of test which arrived from worker @@ -277,11 +283,11 @@ Represents result of one logical test from job configuration. ## UploadedFile -Entity which represents one file which was uploaded to api server. This entity uses _Single Table Inheritance_ and its children are `ExerciseFile` and `SolutionFile` entities. +Entity which represents one file which was uploaded to api server. This entity uses _Single Table Inheritance_ and its children are ExerciseFile and SolutionFile entities. - _name_ -- original name of file uploaded to api - _localFilePath_ -- destination where file is stored on api server -- _uploadedAt_ -- datetime of file upload +- _uploadedAt_ -- date and time of file upload - _fileSize_ -- size of uploaded file in bytes - _user_ -- user which uploaded particular file @@ -295,9 +301,9 @@ Keeps information about all users which are registered in ReCodEx. - _degreesAfterName_ -- degrees after name - _email_ -- email address which is used for sending email notifications - _avatarUrl_ -- url of profile picture -- _isVerified_ -- user verified his/hers email address (not used at the moment) +- _isVerified_ -- user verified his email address (not used at the moment) - _isAllowed_ -- if this field is set to false user cannot sign in to application -- _createdAt_ -- datetime of user registration +- _createdAt_ -- date and time of user registration - _instance_ -- instance to which user belongs to - _settings_ -- settings which are connected to this user - _memberships_ -- array of groups in which is user assigned @@ -306,10 +312,10 @@ Keeps information about all users which are registered in ReCodEx. ## UserAction -Stores information about what routes on api user visited and some additional information about it. This datas should be collected only from logged users. +Stores information about what routes on api user visited and some additional information about it. This data should be collected only from logged users. - _user_ -- which user performed api request -- _loggedAt_ -- time when action was performed +- _loggedAt_ -- date and time when action was performed - _action_ -- action which was requested on api - _params_ -- GET or POST parameters given by user - _code_ -- return code which was sent back by api @@ -317,9 +323,9 @@ Stores information about what routes on api user visited and some additional inf ## UserSettings -User settings belong to some particular user and contains settings mostly for web application. +User settings belong to some user and contains settings mostly for web application. - _darkTheme_ -- dark mode will be used in text editor in web application -- _vimMode_ -- turn vim mode on in text editor used by web application +- _vimMode_ -- turn vim mode keybinding on in text editor used by web application - _defaultLanguage_ -- default language which will be used in web application