1
0
mirror of https://github.com/sasjs/server.git synced 2026-01-07 06:30:06 +00:00

chore: code refactor for getting session controller

This commit is contained in:
Saad Jutt
2022-06-21 03:41:44 +05:00
parent 01e9a1d9e9
commit 3130fbeff0
3 changed files with 31 additions and 42 deletions

View File

@@ -1,12 +1,6 @@
import path from 'path' import path from 'path'
import fs from 'fs' import fs from 'fs'
import { import { getSessionController, processProgram } from './'
SASSessionController,
JSSessionController,
getSASSessionController,
getJSSessionController,
processProgram
} from './'
import { readFile, fileExists, createFile, readFileBinary } from '@sasjs/utils' import { readFile, fileExists, createFile, readFileBinary } from '@sasjs/utils'
import { PreProgramVars, Session, TreeNode } from '../../types' import { PreProgramVars, Session, TreeNode } from '../../types'
import { import {
@@ -78,19 +72,7 @@ export class ExecutionController {
session: sessionByFileUpload, session: sessionByFileUpload,
runTime runTime
}: ExecuteProgramParams): Promise<ExecuteReturnRaw | ExecuteReturnJson> { }: ExecuteProgramParams): Promise<ExecuteReturnRaw | ExecuteReturnJson> {
let sessionController: SASSessionController | JSSessionController const sessionController = getSessionController(runTime)
switch (runTime) {
case RunTimeType.SAS:
sessionController = getSASSessionController()
break
case RunTimeType.JS:
sessionController = getJSSessionController()
break
default:
throw new Error('No Runtime is configured1')
}
const session = const session =
sessionByFileUpload ?? (await sessionController.getSession()) sessionByFileUpload ?? (await sessionController.getSession())

View File

@@ -1,12 +1,7 @@
import { Request, RequestHandler } from 'express' import { Request, RequestHandler } from 'express'
import multer from 'multer' import multer from 'multer'
import { uuidv4 } from '@sasjs/utils' import { uuidv4 } from '@sasjs/utils'
import { import { getSessionController } from '.'
SASSessionController,
JSSessionController,
getSASSessionController,
getJSSessionController
} from '.'
import { import {
executeProgramRawValidation, executeProgramRawValidation,
getRunTimeAndFilePath, getRunTimeAndFilePath,
@@ -42,25 +37,22 @@ export class FileUploadController {
try { try {
;({ runTime } = await getRunTimeAndFilePath(programPath)) ;({ runTime } = await getRunTimeAndFilePath(programPath))
} catch (err: any) { } catch (err: any) {
res.status(400).send({ return res.status(400).send({
status: 'failure', status: 'failure',
message: 'Job execution failed', message: 'Job execution failed',
error: typeof err === 'object' ? err.toString() : err error: typeof err === 'object' ? err.toString() : err
}) })
} }
let sessionController: SASSessionController | JSSessionController let sessionController
try {
switch (runTime) { sessionController = getSessionController(runTime)
case RunTimeType.SAS: } catch (err: any) {
sessionController = getSASSessionController() return res.status(400).send({
break status: 'failure',
case RunTimeType.JS: message: err.message,
sessionController = getJSSessionController() error: typeof err === 'object' ? err.toString() : err
break })
default:
return res.status(400).send('No Runtime is configured1')
} }
const session = await sessionController.getSession() const session = await sessionController.getSession()

View File

@@ -5,7 +5,8 @@ import { execFile } from 'child_process'
import { import {
getSessionsFolder, getSessionsFolder,
generateUniqueFileName, generateUniqueFileName,
sysInitCompiledPath sysInitCompiledPath,
RunTimeType
} from '../../utils' } from '../../utils'
import { import {
deleteFolder, deleteFolder,
@@ -193,7 +194,21 @@ export class JSSessionController extends SessionController {
} }
} }
export const getSASSessionController = (): SASSessionController => { export const getSessionController = (
runTime: RunTimeType
): SASSessionController | JSSessionController => {
if (runTime === RunTimeType.SAS) {
return getSASSessionController()
}
if (runTime === RunTimeType.JS) {
return getJSSessionController()
}
throw new Error('No Runtime is configured')
}
const getSASSessionController = (): SASSessionController => {
if (process.sasSessionController) return process.sasSessionController if (process.sasSessionController) return process.sasSessionController
process.sasSessionController = new SASSessionController() process.sasSessionController = new SASSessionController()
@@ -201,7 +216,7 @@ export const getSASSessionController = (): SASSessionController => {
return process.sasSessionController return process.sasSessionController
} }
export const getJSSessionController = (): JSSessionController => { const getJSSessionController = (): JSSessionController => {
if (process.jsSessionController) return process.jsSessionController if (process.jsSessionController) return process.jsSessionController
process.jsSessionController = new JSSessionController() process.jsSessionController = new JSSessionController()