Skip to content

Architecture

dhruv2000 edited this page Dec 7, 2021 · 3 revisions

Architecture

The current backend API was created in alignment with the following ER diagram: Drag Racing

There are 3 Entities: Users, Modules, and Problems

The Users Entity:

  • Username (String: Email)
  • Name (String)
  • Password (String)
  • Role (Administrator, Professor, TA)

Through the Role attribute, these users have different functionalities in the admin portal.

All Users abilities:

  1. CRUD operations on Modules
  2. CRUD operations on Problems

Professor abilities:

  1. Ability to perform CRUD user operations on TA's

Administrator ONLY abilities:

  1. Ability to perform CRUD user operations on all users

The Modules Entity:

  • Name (String)
  • Number (Number)
  • Problems (String Array of Problem ID's)

As stated above, on the home page of the admin portal, all users have the ability to perform Create, Read, Update, and Delete operations on Modules.

The Problems Entity:

  • Statement: (String)
  • Title: (String)
  • Hidden: (Boolean)
  • Language: (String)
  • DueDate: (Date)
  • Code: (Object)
  • FileExtension: (String)
  • TestCases: (TestCase[])
  • TemplatePackage: (String)
  • TimeLimit: (Number)
  • MemoryLimit: (Number)
  • BuildCommand: (String)