Historical alternate Docker build pipelines for legacy JSON/SQL shaped student submissions (buildOldJson, buildOldSql). Separate from modern /projects flow but mounted alongside under /projects.
| File | Responsibility |
|---|---|
oldProjectRouter.ts |
Registers legacy POST builders |
oldProjectController.ts |
Validates + forwards to services |
oldProjectService.ts |
Git clone / docker orchestration specific to formats |
oldProject.schema.ts |
buildOldProjectSchema (teamId + githubUrl) |
Mounted in app.ts:
router.use('/projects/legacy', oldProjectRouter)Distinct from /projects (no /legacy duplication of modern deploy)—clients must pick correct subtree.
Depends on docker, git, prisma, status constants, and projectDockerOps helpers when shared.
Auth: requireAuth + requireAdmin on each POST handler.
| Method | Path | Payload |
|---|---|---|
POST |
/build-old-json |
teamId, githubUrl validated |
POST |
/build-old-sql |
same |
Prefer keeping destructive infra gated admin-only (router already enforces).
-
Add new compatibility endpoints here only when bridging historical formats—not for net-new student flows (use
projectsinstead). -
Reuse
buildOldProjectSchemafields when possible; widen schema thoughtfully (never accept arbitrary shell fragments). -
When adjusting Docker sequencing, isolate differences in
oldProjectServiceto avoid regressingprojectDeploymodern path. -
Log verbosely (service) but map user-facing
AppErrorcodes consistently.
| File |
|---|
test/oldProjects/oldProjectService.test.ts |
(No dedicated HTTP Vitest harness yet.)