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:
@@ -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())
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user