This repository has been archived by the owner on Oct 27, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.ts
124 lines (112 loc) · 7.86 KB
/
server.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import { createServer, bodyParser, CORS, queryParser, serveStatic, NotFoundError } from 'restify';
import * as multer from 'multer';
import { FileUploadService } from './src/services/file-upload-service';
import { ProductController } from './src/controller/product-controller';
import { ServerController } from './src/controller/server-controller';
import { CategoryController } from './src/controller/category-controller';
import { UnitController } from './src/controller/unit-controller';
import { SizeTypeController } from './src/controller/sizetype-controller';
import { CrateTypeController } from './src/controller/cratetype-controller';
import { EventController } from './src/controller/event-controller';
import { EventTypeController } from './src/controller/eventtype-controller';
import { EventNoteController } from './src/controller/eventnote-controller';
import { InventoryController } from './src/controller/inventory-controller';
import { TinyJson } from './src/shared/tinyjson';
const config = require('./config');
const serverController = new ServerController();
const productController = new ProductController();
const categoryController = new CategoryController();
const unitController = new UnitController();
const sizeTypeController = new SizeTypeController();
const crateTypeController = new CrateTypeController();
const eventController = new EventController();
const eventTypeController = new EventTypeController();
const eventNoteController = new EventNoteController();
const inventoryController = new InventoryController();
const inventoryTypeController = new InventoryController();
let server = createServer({
formatters: {
'application/json': function (req, res, body, cb) {
return cb(null, TinyJson.getJSON(body));
}
}
});
server.use(bodyParser());
server.use(CORS({}));
server.use(queryParser());
// other routes
server.get('/info', serverController.info.bind(serverController));
server.get('/healthcheck', serverController.healthcheck.bind(serverController));
server.get('/init', serverController.initDB.bind(serverController));
server.get('/reset', serverController.resetDB.bind(serverController));
// API routes (GET)
server.get('/products', productController.getAll.bind(productController));
server.get('/product/:productId', productController.getById.bind(productController));
server.get('/product/:productId/deletable', productController.isProductUnused.bind(productController));
server.get('/product/:productId/unused', productController.isProductUnused.bind(productController));
server.get('/product/:productId/size/:sizeTypeId/deletable', productController.isProductSizeDeletable.bind(productController));
server.get('/product/:productId/size/:sizeTypeId/unused', productController.isProductSizeUnused.bind(productController));
server.get('/product/:productId/possible/cratetypes', productController.getPossibleCrateTypesForProduct.bind(productController));
server.get('/events', eventController.getAll.bind(eventController));
server.get('/event/checkpermission', eventController.checkPermission.bind(eventController));
server.get('/event/:eventId', eventController.getById.bind(eventController));
server.get('/event/:eventId/inventory', eventController.getEventInventoryTransfers.bind(eventController));
server.get('/event/:eventId/transfers', eventController.getEventTransfers.bind(eventController));
server.get('/event/:eventId/transactions', eventController.getEventTransactions.bind(eventController));
server.get('/event/:eventId/calculation', eventController.getCalculation.bind(eventController));
server.get('/event/:eventId/costs', eventController.getTransferCosts.bind(eventController));
server.get('/event/:eventId/note/history', eventNoteController.getEventNoteHistory.bind(eventNoteController));
server.get('/eventtypes', eventTypeController.getAll.bind(eventTypeController));
server.get('/eventtype/:eventTypeId', eventTypeController.getById.bind(eventTypeController));
server.get('/categories', categoryController.getAll.bind(categoryController));
server.get('/category/:categoryId', categoryController.getById.bind(categoryController));
server.get('/units', unitController.getAll.bind(unitController));
server.get('/unit/:unitId', unitController.getById.bind(unitController));
server.get('/sizetypes', sizeTypeController.getAll.bind(sizeTypeController));
server.get('/sizetype/:sizeTypeId', sizeTypeController.getById.bind(sizeTypeController));
server.get('/cratetypes', crateTypeController.getAll.bind(crateTypeController));
server.get('/cratetype/:crateTypeId', crateTypeController.getById.bind(crateTypeController));
server.get('/inventory', inventoryController.getCurrent.bind(inventoryController));
server.get('/inventory/:eventId', inventoryController.getByEventId.bind(inventoryController));
// API routes (POST)
server.post('/product', productController.addProduct.bind(productController));
server.post('/product/:productId/size', productController.addSizeToProduct.bind(productController));
server.post('/product/:productId/cratetype', productController.addCrateTypeToProduct.bind(productController));
server.post('/event', eventController.addEvent.bind(eventController));
server.post('/event/:eventId/close', eventController.closeEvent.bind(eventController));
server.post('/event/:eventId/transfers/storage/out', eventController.addTransferStorageOut.bind(eventController));
server.post('/event/:eventId/transfers/storage/in', eventController.addTransferStorageIn.bind(eventController));
server.post('/event/:eventId/transfers/counter/out', eventController.addTransferCounterOut.bind(eventController));
server.post('/event/:eventId/transfers/storage/count', eventController.countStorage.bind(eventController));
server.post('/event/:eventId/transfers/counter/count', eventController.countCounter.bind(eventController));
server.post('/event/:eventId/note', eventNoteController.addEventNote.bind(eventNoteController));
server.post('/category', categoryController.addCategory.bind(categoryController));
server.post('/unit', unitController.addUnit.bind(unitController));
server.post('/cratetype', crateTypeController.addCrateType.bind(crateTypeController));
server.post('/sizetype', sizeTypeController.addSizeType.bind(sizeTypeController));
// API routes (PUT)
server.put('/product/:productId', productController.updateProduct.bind(productController));
server.put('/product/:productId/image', productController.uploadImage.bind(productController));
server.put('/product/:productId/size/:sizeTypeId', productController.updateSizeOfProduct.bind(productController));
server.put('/event/:eventId', eventController.updateEvent.bind(eventController));
server.put('/category/:categoryId', categoryController.updateCategory.bind(categoryController));
server.put('/unit/:unitId', unitController.updateUnit.bind(unitController));
server.put('/cratetype/:crateTypeId', crateTypeController.updateCrateType.bind(crateTypeController));
server.put('/sizetype/:sizeTypeId', sizeTypeController.updateSizeType.bind(sizeTypeController));
// API routes (DELETE)
server.del('/product/:productId', productController.deleteProduct.bind(productController));
server.del('/product/:productId/size/:sizeTypeId', productController.deleteSizeOfProduct.bind(productController));
server.del('/product/:productId/cratetype/:crateTypeId', productController.deleteCrateTypeOfProduct.bind(productController));
server.del('/event/:eventId', eventController.deleteEvent.bind(eventController));
server.del('/category/:categoryId', categoryController.deleteCategory.bind(categoryController));
server.del('/unit/:unitId', unitController.deleteUnit.bind(unitController));
server.del('/cratetype/:crateTypeId', crateTypeController.deleteCrateType.bind(crateTypeController));
server.del('/sizetype/:sizeTypeId', sizeTypeController.deleteSizeType.bind(sizeTypeController));
// serve public folder
server.get(/^\/*/, serveStatic({
directory: __dirname + '/public/',
default: 'index.html'
}));
server.listen(config.port, () => {
console.log('ILTIS API on %s', server.url);
});