Skip to content

Commit 191f276

Browse files
committed
Refactor code structure for improved readability and maintainability
1 parent 670cf87 commit 191f276

7 files changed

Lines changed: 39 additions & 642 deletions

File tree

backend/.development.env

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,6 @@ JWT_SECRET=MySuperSecretJwtSecret
5757

5858
TEMPORARY_JWT_SECRET=MySuperSecretTemporaryJwtSecret
5959

60-
# session secret for storing ai history
61-
# you need it if you want to use openai service
62-
# required if OPENAI_API_KEY is set
63-
SESSION_SECRET=MySuperSecretSessionSecret
64-
6560
# for authorization with google
6661
GOOGLE_CLIENT_ID=
6762

backend/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
"@sentry/minimal": "^6.19.7",
4949
"@sentry/node": "8.52.0",
5050
"@types/crypto-js": "^4.2.2",
51-
"@types/express-session": "^1.18.2",
5251
"@types/jsonwebtoken": "^9.0.10",
5352
"@types/multer": "^2.0.0",
5453
"@types/nodemailer": "^6.4.17",
@@ -71,7 +70,6 @@
7170
"eslint-plugin-security": "3.0.1",
7271
"express": "5.1.0",
7372
"express-rate-limit": "7.5.1",
74-
"express-session": "^1.18.1",
7573
"fetch-blob": "^4.0.0",
7674
"helmet": "8.1.0",
7775
"ip-range-check": "0.2.0",

backend/src/entities/ai/application/data-structures/request-info-from-table.ds.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ export class RequestInfoFromTableDS {
99

1010
export class RequestInfoFromTableDSV2 extends RequestInfoFromTableDS {
1111
response: Response;
12+
previous_response_id?: string | null;
1213
}

backend/src/entities/ai/use-cases/request-info-from-table-with-ai-v4.use.case.ts

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,6 @@ import { Response } from 'express';
1919
import { ConnectionEntity } from '../../connection/connection.entity.js';
2020
import { IDataAccessObject } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/interfaces/data-access-object.interface.js';
2121
import { IDataAccessObjectAgent } from '@rocketadmin/shared-code/dist/src/data-access-layer/shared/interfaces/data-access-object-agent.interface.js';
22-
23-
declare module 'express-session' {
24-
interface Session {
25-
lastResponseId?: string | null;
26-
}
27-
}
28-
2922
@Injectable({ scope: Scope.REQUEST })
3023
export class RequestInfoFromTableWithAIUseCaseV4
3124
extends AbstractUseCase<RequestInfoFromTableDSV2, void>
@@ -41,8 +34,8 @@ export class RequestInfoFromTableWithAIUseCaseV4
4134
}
4235

4336
public async implementation(inputData: RequestInfoFromTableDSV2): Promise<void> {
44-
const { connectionId, tableName, user_message, master_password, user_id, response } = inputData;
45-
this.initializeSession(response);
37+
const { connectionId, tableName, user_message, master_password, user_id, response, previous_response_id } =
38+
inputData;
4639
this.setupResponseHeaders(response);
4740

4841
const { foundConnection, dataAccessObject, databaseType, isMongoDb, userEmail } = await this.setupConnection(
@@ -60,7 +53,7 @@ export class RequestInfoFromTableWithAIUseCaseV4
6053
system_prompt,
6154
user_id,
6255
tools,
63-
response,
56+
previous_response_id,
6457
);
6558
const currentDepth = 0;
6659
await this.handleStreamRecursively(
@@ -230,7 +223,6 @@ export class RequestInfoFromTableWithAIUseCaseV4
230223
}
231224
response.write(chunk.delta);
232225
}
233-
response.req.session.lastResponseId = current_response_id;
234226
}
235227
}
236228

@@ -387,16 +379,6 @@ export class RequestInfoFromTableWithAIUseCaseV4
387379
response.setHeader('Connection', 'keep-alive');
388380
}
389381

390-
private initializeSession(response: any): void {
391-
if (!response.req.session) {
392-
(response.req as any).session = {
393-
lastResponseId: null,
394-
};
395-
} else if (response.req.session.lastResponseId === undefined) {
396-
response.req.session.lastResponseId = null;
397-
}
398-
}
399-
400382
private async setupConnection(connectionId: string, master_password: string, user_id: string) {
401383
const foundConnection = await this._dbContext.connectionRepository.findAndDecryptConnection(
402384
connectionId,
@@ -481,7 +463,7 @@ Remember that all responses should be clear and user-friendly, explaining techni
481463
system_prompt: string,
482464
user_id: string,
483465
tools: any[],
484-
response: any,
466+
previous_response_id: string | null = null,
485467
) {
486468
const openApiKey = getRequiredEnvVariable('OPENAI_API_KEY');
487469
const openai = new OpenAI({ apiKey: openApiKey });
@@ -493,7 +475,7 @@ Remember that all responses should be clear and user-friendly, explaining techni
493475
user: user_id,
494476
stream: true,
495477
tools: tools,
496-
previous_response_id: response.req.session.lastResponseId || undefined,
478+
previous_response_id: previous_response_id || undefined,
497479
});
498480
}
499481

backend/src/helpers/validators/required-environment-variables.validator.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@ import { Messages } from '../../exceptions/text/messages.js';
33
export function requiredEnvironmentVariablesValidator(): void {
44
const requiredParameterNames: Array<string> = ['DATABASE_URL', 'PRIVATE_KEY', 'JWT_SECRET'];
55

6-
if (process.env.OPENAI_API_KEY && process.env.OPENAI_API_KEY.length) {
7-
requiredParameterNames.push('SESSION_SECRET');
8-
}
9-
106
const requiredParameters: Array<{ [k: string]: string | null }> = requiredParameterNames.map((paramName) => {
117
const paramValue = getEnvironmentVariable(paramName);
128
return {

backend/src/main.ts

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import bodyParser from 'body-parser';
77
import { ValidationError } from 'class-validator';
88
import cookieParser from 'cookie-parser';
99
import rateLimit from 'express-rate-limit';
10-
import session from 'express-session';
1110
import helmet from 'helmet';
1211
import { ApplicationModule } from './app.module.js';
1312
import { WinstonLogger } from './entities/logging/winston-logger.js';
@@ -42,26 +41,6 @@ async function bootstrap() {
4241

4342
app.use(cookieParser());
4443

45-
const cookieDomain = process.env.ROCKETADMIN_COOKIE_DOMAIN || undefined;
46-
const sessionSecret = process.env.SESSION_SECRET || undefined;
47-
if (sessionSecret) {
48-
app.use(
49-
session({
50-
secret: sessionSecret,
51-
resave: false,
52-
saveUninitialized: false,
53-
cookie: {
54-
secure: true,
55-
domain: cookieDomain,
56-
maxAge: 2 * 60 * 60 * 1000,
57-
httpOnly: true,
58-
path: '/',
59-
},
60-
name: 'rocketadmin.sid',
61-
}),
62-
);
63-
}
64-
6544
app.enableCors({
6645
origin: [
6746
'https://app.autoadmin.org',

0 commit comments

Comments
 (0)