Selaa lähdekoodia

[新增]代码作业模块api设计

soleil 7 vuotta sitten
vanhempi
commit
3e6ce24bf4

+ 80 - 0
mock/modules/codeHomework/index.js

@@ -0,0 +1,80 @@
+const express = require("express");
+const router = express.Router();
+const projectSerializer = require("../../serializers/codeHomework/ProjectSerializer");
+const buildSerializer = require("../../serializers/codeHomework/BuildSerializer");
+const deploySerializer = require("../../serializers/codeHomework/DeploySerializer");
+const functionTestSerializer = require("../../serializers/codeHomework/FunctionalTestSerializer");
+const mirrorSerializer = require("../../serializers/codeHomework/MirrorSerializer");
+
+//获得某个 Homework 的 Project 列表(应该只有一个)
+router.route("/projects").post((req, res) => {
+  res.send({
+    data: [projectSerializer(), projectSerializer()]
+  });
+});
+
+//获得 Project 的详细信息
+router.route("/project/:id").get((req, res) => {
+  res.send({
+    data: projectSerializer()
+  });
+});
+
+//获得一次构建的详细信息
+router.route("/build/:id").get((req, res) => {
+  res.send({
+    data: buildSerializer()
+  });
+});
+
+//获得一次部署的详细信息
+router.route("/deploy/:id").get((req, res) => {
+  res.send({
+    data: deploySerializer()
+  });
+});
+
+//获得一次单元测试的相信信息TODO
+
+//获得一次页面功能测试的详细信息
+router.route("/functional/:id").get((req, res) => {
+  res.send({
+    data: functionTestSerializer()
+  });
+});
+
+//获得可用的镜像id
+router.route("/mirrors/:homeworkId/:projectId").get((req, res) => {
+  res.send({
+    data: [mirrorSerializer(), mirrorSerializer()]
+  });
+});
+
+//触发一次部署
+router.route("/deploy").post((req, res) => {
+  res.send({
+    data: {
+      success: true
+    }
+  });
+});
+
+//触发一次单元测试
+router.route("/unit").post((req, res) => {
+  res.send({
+    data: {
+      success: false
+    }
+  });
+});
+
+//触发一次页面功能测试
+router.route("/functional").post((req, res) => {
+  res.send({
+    data: {
+      success: true
+    }
+  });
+});
+
+module.exports = router;

+ 1 - 0
mock/routes.js

@@ -6,5 +6,6 @@ router.use("/user", require("./modules/user"));
 router.use("/course", require("./modules/course"));
 router.use("/group", require("./modules/group"));
 router.use("/review", require("./modules/review"));
+router.use("/codehw", require("./modules/codeHomework"));
 
 module.exports = router;

+ 21 - 0
mock/serializers/codeHomework/MirrorSerializer.js

@@ -0,0 +1,21 @@
+const makeId = require("../../util/makeId");
+
+/**
+ * @description 代码作业镜像的基本信息
+ * @typedef {Object} MirrorSerializerType
+ * @property {number | string} id 镜像id
+ * @property {string} gitUrl 仓库地址
+ * @property {string} downloadUrl 镜像下载地址
+ */
+
+/**
+ * @description 生成代码作业镜像的基本信息
+ * @returns {MirrorSerializerType}
+ */
+module.exports = () => {
+  return {
+    id: makeId(),
+    gitUrl: "http://47.100.18.120:3000/SEEC-II-DOC/API-DOC",
+    downloadUrl: "http://47.100.18.120:3000/SEEC-II-DOC/API-DOC"
+  };
+};

+ 1 - 0
src/api/_prefix.js

@@ -7,3 +7,4 @@ export const TAG_MODULE = `${API_VERSION}/tag`;
 export const COURSE_MODULE = `${API_VERSION}/course`;
 export const GROUP_MODULE = `${API_VERSION}/group`;
 export const REVIEW_MODULE = `${API_VERSION}/review`;
+export const CODEHW_MODULE = `${API_VERSION}/codehw`;

+ 110 - 0
src/api/codehw.js

@@ -0,0 +1,110 @@
+import request from "@/util/request";
+import { CODEHW_MODULE } from "./_prefix";
+
+/**
+ * 获得某个homework的project列表
+ * @returns {Promise<{data:ProjectSerializerType[]}>}
+ */
+export const getHomeworkProject = () => {
+  return request(`${CODEHW_MODULE}/projects`);
+};
+
+/**
+ * 获得Project的详细信息
+ * @returns {Promise<{data:ProjectSerializerType}>}
+ */
+export const getProjectDetail = () => {
+  return request(`${CODEHW_MODULE}/project/123`);
+};
+
+/**
+ * 获得一次构建的详细信息
+ * @returns {Promise<{data:BuildSerializerType}>}
+ */
+export const getBuildDetail = () => {
+  return request(`${CODEHW_MODULE}/build/123`);
+};
+
+/**
+ * 获得一次部署的详细信息
+ * @returns {Promise<{data:DeploySerializerType}>}
+ */
+export const getDeployDetail = () => {
+  return request(`${CODEHW_MODULE}/deploy/123`);
+};
+
+/**
+ * 获得一次单元测试的详细信息
+ * @returns {Promise<{data:UnitTestSerializerType}>}
+ */
+export const getUnitTestDetail = () => {
+  return request(`${CODEHW_MODULE}/unit/123`);
+};
+
+/**
+ * 获得一次页面功能测试的详细信息
+ * @returns {Promise<{data:FunctionalTestSerializerType}>}
+ */
+export const getFunctionalTestDetail = () => {
+  return request(`${CODEHW_MODULE}/functional/123`);
+};
+
+/**
+ * 获得可用的镜像ID
+ * @returns {Promise<{data:MirrorSerializerType[]}>}
+ */
+export const getMirrorId = () => {
+  return request(`${CODEHW_MODULE}/mirrors/123/123`);
+};
+
+/**
+ * 触发一次部署
+ * @param {number | string} homeworkId
+ * @param {number | string} projectId
+ * @param {number | string} mirrorId
+ * @returns {Promise<{data:boolean}>} TBD
+ */
+export const startDeploy = ({ homeworkId, projectId, mirrorId }) => {
+  return request(`${CODEHW_MODULE}/deploy`, {
+    method: "POST",
+    body: {
+      homeworkId: homeworkId || null,
+      projectId: projectId || null,
+      mirrorId: mirrorId || null
+    }
+  });
+};
+
+/**
+ * 触发一次单元测试
+ * @param {number | string} homeworkId
+ * @param {number | string} projectId
+ * @returns {Promise<{data:boolean}>} TBD
+ */
+export const startUnitTest = ({ homeworkId, projectId }) => {
+  return request(`${CODEHW_MODULE}/unit`, {
+    method: "POST",
+    body: {
+      homeworkId: homeworkId || null,
+      projectId: projectId || null
+    }
+  });
+};
+
+/**
+ * 触发一次页面功能测试
+ * @param {number | string} homeworkId
+ * @param {number | string} projectId
+ * @param {number | string} deployId
+ * @returns {Promise<{data:boolean}>} TBD
+ */
+export const startFunctionalTest = ({ homeworkId, projectId, deployId }) => {
+  return request(`${CODEHW_MODULE}/functional`, {
+    method: "POST",
+    body: {
+      homeworkId: homeworkId || null,
+      projectId: projectId || null,
+      deployId: deployId || null
+    }
+  });
+};