-
Notifications
You must be signed in to change notification settings - Fork 9
Rule Dashboard Parsing #3730
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rule Dashboard Parsing #3730
Changes from all commits
d4d4d6e
9019844
a31c186
79d5fc2
d89bfb3
3c3bd88
f518513
e64fbff
d4d0448
9edeb0f
c7c31ea
07eb8f1
ce707ed
aff6c9b
0b07c8e
6c6e283
190a3d3
c468f07
cc2155a
b578f54
612f3f2
9c85601
c1a7dd8
d6d82a2
355a09f
935ea9b
1defcd9
f512d12
592a425
853b148
3119d5c
a3f7483
9c3f328
a223431
c87b81f
89759da
e2a0ba0
d010583
dced682
2d127a9
e812220
3ae3fc0
c19732c
57650c7
b282f8c
710011e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,7 @@ | ||
| import { NextFunction, Request, Response } from 'express'; | ||
| import RulesService from '../services/rules.services'; | ||
| import { ProjectRule, Rule, Ruleset } from 'shared'; | ||
| import { HttpException } from '../utils/errors.utils'; | ||
|
|
||
| export default class RulesController { | ||
| static async getActiveRuleset(req: Request, res: Response, next: NextFunction) { | ||
|
|
@@ -13,6 +14,16 @@ export default class RulesController { | |
| } | ||
| } | ||
|
|
||
| static async getRulesetById(req: Request, res: Response, next: NextFunction) { | ||
| try { | ||
| const { rulesetId } = req.params; | ||
| const ruleset = await RulesService.getRulesetById(rulesetId, req.organization.organizationId); | ||
| res.status(200).json(ruleset); | ||
| } catch (error: unknown) { | ||
| next(error); | ||
| } | ||
| } | ||
|
|
||
| static async createRule(req: Request, res: Response, next: NextFunction) { | ||
| try { | ||
| const { ruleCode, ruleContent, rulesetId, parentRuleId, referencedRules, imageFileIds } = req.body; | ||
|
|
@@ -274,6 +285,38 @@ export default class RulesController { | |
| } | ||
| } | ||
|
|
||
| static async parseRuleset(req: Request, res: Response, next: NextFunction) { | ||
| try { | ||
| const { fileId, parserType } = req.body; | ||
| const { rulesetId } = req.params; | ||
|
|
||
| const parseResult = await RulesService.parseRuleset( | ||
| req.currentUser, | ||
| req.organization.organizationId, | ||
| fileId, | ||
| rulesetId, | ||
| parserType | ||
| ); | ||
|
|
||
| res.status(200).json(parseResult); | ||
| } catch (error: unknown) { | ||
| next(error); | ||
| } | ||
| } | ||
Zwendle marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| static async uploadRulesetFile(req: Request, res: Response, next: NextFunction) { | ||
| try { | ||
| if (!req.file) { | ||
| throw new HttpException(400, 'Invalid or undefined file data'); | ||
| } | ||
|
|
||
| const fileId = await RulesService.uploadRulesetFile(req.file, req.currentUser, req.organization); | ||
| res.status(200).json(fileId); | ||
| } catch (error: unknown) { | ||
| next(error); | ||
| } | ||
| } | ||
|
Comment on lines
307
to
318
|
||
|
|
||
| static async getSingleRuleset(req: Request, res: Response, next: NextFunction) { | ||
| try { | ||
| const { rulesetId } = req.params; | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||||
|---|---|---|---|---|---|---|---|---|
|
|
@@ -2,10 +2,13 @@ import express from 'express'; | |||||||
| import RulesController from '../controllers/rules.controllers'; | ||||||||
| import { nonEmptyString, validateInputs } from '../utils/validation.utils'; | ||||||||
| import { body } from 'express-validator'; | ||||||||
| import { MAX_FILE_SIZE } from 'shared'; | ||||||||
| import multer, { memoryStorage } from 'multer'; | ||||||||
|
|
||||||||
| const rulesRouter = express.Router(); | ||||||||
|
|
||||||||
| rulesRouter.get('/rulesetType/:rulesetTypeId/active', RulesController.getActiveRuleset); | ||||||||
| rulesRouter.get('/ruleset/:rulesetId', RulesController.getRulesetById); | ||||||||
|
|
||||||||
| rulesRouter.post( | ||||||||
| '/rule/create', | ||||||||
|
|
@@ -90,4 +93,15 @@ rulesRouter.get('/:ruleId/subrules', RulesController.getChildRules); | |||||||
| rulesRouter.get('/:rulesetId/parentRules', RulesController.getTopLevelRules); | ||||||||
| rulesRouter.get('/ruleset/:rulesetId', RulesController.getSingleRuleset); | ||||||||
|
|
||||||||
| rulesRouter.post( | ||||||||
| '/ruleset/:rulesetId/parse', | ||||||||
| nonEmptyString(body('fileId')), | ||||||||
| nonEmptyString(body('parserType')), // 'FSAE' or 'FHE' | ||||||||
|
||||||||
| nonEmptyString(body('parserType')), // 'FSAE' or 'FHE' | |
| nonEmptyString(body('parserType')), // 'FSAE' or 'FHE' | |
| body('parserType').isIn(['FSAE', 'FHE']), |
Uh oh!
There was an error while loading. Please reload this page.