Implemented basic entities, routes, seed scripts

This commit is contained in:
ireic
2019-12-02 01:27:59 +01:00
parent 9edb74c2df
commit 5a08433830
32 changed files with 2340 additions and 118 deletions

41
src/controllers/issues.ts Normal file
View File

@@ -0,0 +1,41 @@
import express from 'express';
import { Issue } from 'entities';
import { catchErrors } from 'errors';
import { updateEntity, deleteEntity, createEntity, findEntityOrThrow } from 'utils/typeorm';
const router = express.Router();
router.get(
'/issues/:issueId',
catchErrors(async (req, res) => {
const issue = await findEntityOrThrow(Issue, req.params.issueId);
res.respond({ issue });
}),
);
router.post(
'/issues',
catchErrors(async (req, res) => {
const issue = await createEntity(Issue, req.body);
res.respond({ issue });
}),
);
router.put(
'/issues/:issueId',
catchErrors(async (req, res) => {
const issue = await updateEntity(Issue, req.params.issueId, req.body);
res.respond({ issue });
}),
);
router.delete(
'/issues/:issueId',
catchErrors(async (req, res) => {
const issue = await deleteEntity(Issue, req.params.issueId);
res.respond({ issue });
}),
);
export default router;

View File

@@ -0,0 +1,51 @@
import express from 'express';
import { Project } from 'entities';
import { catchErrors } from 'errors';
import { findEntityOrThrow, updateEntity, deleteEntity, createEntity } from 'utils/typeorm';
const router = express.Router();
router.get(
'/projects',
catchErrors(async (_req, res) => {
const projects = await Project.find();
res.respond({ projects });
}),
);
router.get(
'/projects/:projectId',
catchErrors(async (req, res) => {
const project = await findEntityOrThrow(Project, req.params.projectId, {
relations: ['users', 'issues', 'issues.comments'],
});
res.respond({ project });
}),
);
router.post(
'/projects',
catchErrors(async (req, res) => {
const project = await createEntity(Project, req.body);
res.respond({ project });
}),
);
router.put(
'/projects/:projectId',
catchErrors(async (req, res) => {
const project = await updateEntity(Project, req.params.projectId, req.body);
res.respond({ project });
}),
);
router.delete(
'/projects/:projectId',
catchErrors(async (req, res) => {
const project = await deleteEntity(Project, req.params.projectId);
res.respond({ project });
}),
);
export default router;

22
src/controllers/users.ts Normal file
View File

@@ -0,0 +1,22 @@
import express from 'express';
import { User } from 'entities';
import { catchErrors } from 'errors';
import { createEntity } from 'utils/typeorm';
import { signToken } from 'utils/authToken';
import seedGuestUserEntities from 'database/seeds/guestUser';
const router = express.Router();
router.post(
'/users/guest',
catchErrors(async (req, res) => {
const user = await createEntity(User, req.body);
await seedGuestUserEntities(user);
res.respond({
authToken: signToken({ sub: user.id }),
});
}),
);
export default router;