Skip to content

Commit 37bbec7

Browse files
author
Chahat Gupta
committed
- Restructure code
- Added folder capability
1 parent 7a54660 commit 37bbec7

File tree

8 files changed

+125
-6
lines changed

8 files changed

+125
-6
lines changed

readme.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Mock API Manager
1+
# MockModel API Manager
22

3-
Welcome to my hobby project - the Mock API Manager! This TypeScript-based tool simplifies the creation and management of mock APIs for your development and testing needs.
3+
Welcome to my hobby project - the MockModel API Manager! This TypeScript-based tool simplifies the creation and management of mock APIs for your development and testing needs.
44

55
<img width="1440" alt="Screenshot 2023-09-16 at 11 13 59 PM" src="https://github.com/chtgupta/mock_api_backend/assets/22120812/8a5cbab6-bb82-48d5-b1dc-4037367fac94">
66

src/index.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,13 @@ function configureServer(): void {
2222
app.use(express.urlencoded({extended: true}))
2323
app.use(express.json())
2424

25-
const routes = require('./routes')
26-
app.use('/', routes)
25+
const mockRoutes = require('./routes/mock.routes')
26+
const mockFolderRoutes = require('./routes/mock_folder.routes')
27+
const allRoutes = require('./routes/all.routes')
28+
29+
app.use('/all', allRoutes) // do not move this below '/' else it clashes with /:id
30+
app.use('/folder', mockFolderRoutes) // do not move this below '/' else it clashes with /:id
31+
app.use('/', mockRoutes)
2732

2833
app.listen(process.env.PORT, (): void => {
2934
console.log(`Server running on port ${process.env.PORT}..`)

src/routes/all.routes.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import express, { Request, Response } from 'express'
2+
import { MockFolder, MockFolderModel } from '../models/mock_folder.model'
3+
import { ApiResponse } from '../common/api_response'
4+
import {Mock, MockModel} from "../models/mock.model";
5+
6+
const router = express.Router()
7+
8+
router.get('/', async (req: Request, res: Response): Promise<void> => {
9+
try {
10+
const mockFolders: MockFolderModel[] = await MockFolder.find()
11+
const mocks: MockModel[] = await Mock.find({ folderId: null })
12+
const response: ApiResponse = ApiResponse.success({
13+
folders: mockFolders,
14+
files: mocks
15+
})
16+
res.status(200).json(response)
17+
} catch (error: unknown) {
18+
const response: ApiResponse = ApiResponse.error((error as Error).message)
19+
res.status(500).json(response)
20+
}
21+
})
22+
23+
module.exports = router

src/routes.ts renamed to src/routes/mock.routes.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import express, { Request, Response } from 'express'
2-
import { Mock, MockModel } from './models/mock'
3-
import { ApiResponse } from './models/api_response'
2+
import { Mock, MockModel } from '../models/mock.model'
3+
import { ApiResponse } from '../common/api_response'
44
import mongoose from 'mongoose'
55

66
const router = express.Router()

src/routes/mock_folder.routes.ts

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
import express, { Request, Response } from 'express'
2+
import { MockFolder, MockFolderModel } from '../models/mock_folder.model'
3+
import { ApiResponse } from '../common/api_response'
4+
import mongoose from 'mongoose'
5+
6+
const router = express.Router()
7+
8+
router.get('/', async (req: Request, res: Response): Promise<void> => {
9+
try {
10+
const mockFolders: MockFolderModel[] = await MockFolder.find()
11+
const response: ApiResponse = ApiResponse.success(mockFolders)
12+
res.status(200).json(response)
13+
} catch (error: unknown) {
14+
const response: ApiResponse = ApiResponse.error((error as Error).message)
15+
res.status(500).json(response)
16+
}
17+
})
18+
19+
router.get('/:id', async (req: Request, res: Response): Promise<void> => {
20+
try {
21+
const mockFolder: MockFolderModel | null = await MockFolder.findById(req.params.id)
22+
if (mockFolder != null) {
23+
const response: ApiResponse = ApiResponse.success(mockFolder)
24+
res.status(200).json(response)
25+
} else {
26+
const response: ApiResponse = ApiResponse.error(`No document found with id ${req.params.id}`)
27+
res.status(404).json(response)
28+
}
29+
} catch (error: unknown) {
30+
const response: ApiResponse = ApiResponse.error('An error occurred')
31+
res.status(500).json(response)
32+
}
33+
})
34+
35+
router.post('/', async (req: Request, res: Response): Promise<void> => {
36+
37+
const data = new MockFolder({
38+
name: req.body.name
39+
})
40+
try {
41+
const mockFolder: MockFolderModel = await data.save()
42+
const response: ApiResponse = ApiResponse.success(mockFolder, 'Document created')
43+
res.status(201).json(response)
44+
} catch (error: unknown) {
45+
const response: ApiResponse = ApiResponse.error((error as Error).message)
46+
res.status(401).json(response)
47+
}
48+
})
49+
50+
router.put('/:id', async (req: Request, res: Response): Promise<void> => {
51+
try {
52+
53+
const newName: string | null = req.body.name
54+
55+
const query: mongoose.UpdateQuery<MockFolderModel> = { name: newName }
56+
57+
MockFolder.findByIdAndUpdate(req.params.id, query, (updateError: mongoose.CallbackError) => {
58+
if (updateError) {
59+
const response: ApiResponse = ApiResponse.error((updateError as Error).message)
60+
res.status(500).json(response)
61+
} else {
62+
const response: ApiResponse = ApiResponse.success(null, 'Document updated successfully')
63+
res.status(200).json(response)
64+
}
65+
})
66+
} catch (error: unknown) {
67+
const response: ApiResponse = ApiResponse.error((error as Error).message)
68+
res.status(500).json(response)
69+
}
70+
})
71+
72+
router.delete('/:id', async (req: Request, res: Response): Promise<void> => {
73+
74+
try {
75+
MockFolder.findByIdAndDelete(req.params.id, null, (deleteError: mongoose.CallbackError) => {
76+
if (deleteError) {
77+
const response: ApiResponse = ApiResponse.error((deleteError as Error).message)
78+
res.status(500).json(response)
79+
} else {
80+
const response: ApiResponse = ApiResponse.success(null, `Document with id ${req.params.id} removed`)
81+
res.status(200).json(response)
82+
}
83+
})
84+
} catch (error: unknown) {
85+
const response: ApiResponse = ApiResponse.error((error as Error).message)
86+
res.status(500).json(response)
87+
}
88+
89+
})
90+
91+
module.exports = router

0 commit comments

Comments
 (0)