Skip to content

Commit 83180df

Browse files
author
Roman Snapko
committed
Merge branch 'refs/heads/main' into fix/outlook-trigger-error
2 parents 6f74092 + 212990c commit 83180df

6 files changed

Lines changed: 53 additions & 21 deletions

File tree

packages/react-ui/src/app/features/ai/lib/assistant-ui-chat-hook.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,10 @@ export const useAssistantChat = ({
232232
toast(errorToast);
233233
},
234234
onFinish: async () => {
235+
if (chatMode !== ChatMode.Agent) {
236+
return;
237+
}
238+
235239
if (!chatId || hasAttemptedNameGenerationRef.current[chatId]) {
236240
return;
237241
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { MigrationInterface, QueryRunner } from 'typeorm';
2+
3+
export class AddTablesTokenToProject1763131154284
4+
implements MigrationInterface
5+
{
6+
name = 'AddTablesTokenToProject1763131154284';
7+
8+
public async up(queryRunner: QueryRunner): Promise<void> {
9+
await queryRunner.query(`
10+
ALTER TABLE "project"
11+
ADD COLUMN IF NOT EXISTS "tablesToken" character varying NULL
12+
`);
13+
}
14+
15+
public async down(_: QueryRunner): Promise<void> {
16+
throw new Error('Rollback not implemented');
17+
}
18+
}

packages/server/api/src/app/database/postgres-connection.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import { AddContentTypeToFolder1757331587268 } from './migrations/1757331587268-
3737
import { MigrateAiConfigToAppConnection1759242268873 } from './migrations/1759242268873-MigrateAiConfigToAppConnection';
3838
import { AddTestRunActionLimitsToFlowVersion1760429290001 } from './migrations/1760429290001-AddTestRunActionLimitsToFlowVersion';
3939
import { MoveTablesWorkspaceIdFromOrganizationToProject1760500000000 } from './migrations/1760500000000-MoveTablesWorkspaceIdFromOrganizationToProject';
40+
import { AddTablesTokenToProject1763131154284 } from './migrations/1763131154284-AddTablesTokenToProject';
4041

4142
const getSslConfig = (): boolean | TlsOptions => {
4243
const useSsl = system.get(AppSystemProp.POSTGRES_USE_SSL);
@@ -82,6 +83,7 @@ const getMigrations = (): (new () => MigrationInterface)[] => {
8283
MigrateAiConfigToAppConnection1759242268873,
8384
AddTestRunActionLimitsToFlowVersion1760429290001,
8485
MoveTablesWorkspaceIdFromOrganizationToProject1760500000000,
86+
AddTablesTokenToProject1763131154284,
8587
];
8688
};
8789

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { createAxiosHeaders, makeOpenOpsTablesPost } from '@openops/common';
22

3+
const TOKEN_NAME_PREFIX = 'Project_';
4+
35
export type DatabaseToken = {
46
id: number;
57
name: string;
@@ -14,25 +16,24 @@ export type DatabaseToken = {
1416
};
1517

1618
export type CreateDatabaseTokenParams = {
17-
name: string;
19+
token: string;
20+
projectId: string;
1821
workspaceId: number;
19-
systemToken: string;
2022
};
2123

22-
export async function createDatabaseToken(
24+
export async function createProjectDatabaseToken(
2325
params: CreateDatabaseTokenParams,
2426
): Promise<DatabaseToken> {
2527
const payload = {
26-
name: params.name,
28+
name: `${TOKEN_NAME_PREFIX}${params.projectId}`,
2729
workspace: params.workspaceId,
2830
};
2931

30-
const headers = createAxiosHeaders(params.systemToken);
31-
const response = await makeOpenOpsTablesPost<DatabaseToken>(
32+
const headers = createAxiosHeaders(params.token);
33+
34+
return makeOpenOpsTablesPost<DatabaseToken>(
3235
'api/database/tokens/',
3336
payload,
3437
headers,
3538
);
36-
37-
return response;
3839
}

packages/server/api/src/app/openops-tables/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { addUserToWorkspace } from './add-user-workspace';
22
import { createDatabase } from './create-database';
3-
import { createDatabaseToken } from './create-database-token';
3+
import { createProjectDatabaseToken } from './create-database-token';
44
import { createMcpEndpoint } from './create-mcp-endpoint';
55
import { createTable } from './create-table';
66
import { createUser } from './create-user';
@@ -17,7 +17,7 @@ export const openopsTables = {
1717
addUserToWorkspace,
1818
listDatabases,
1919
createDatabase,
20-
createDatabaseToken,
20+
createProjectDatabaseToken,
2121
createTable,
2222
listWorkspaces,
2323
createWorkspace,
Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,31 @@
11
const openopsCommonMock = {
22
...jest.requireActual('@openops/common'),
33
makeOpenOpsTablesPost: jest.fn(),
4+
createAxiosHeaders: jest.fn(),
45
};
56
jest.mock('@openops/common', () => openopsCommonMock);
67

78
import { AxiosHeaders } from 'axios';
8-
import { createDatabaseToken } from '../../../src/app/openops-tables/create-database-token';
9+
import { createProjectDatabaseToken } from '../../../src/app/openops-tables/create-database-token';
910

10-
describe('createDatabaseToken', () => {
11+
describe('createProjectDatabaseToken', () => {
1112
beforeEach(() => {
1213
jest.clearAllMocks();
1314
});
1415

1516
it('should return the created token on successful creation', async () => {
1617
const params = {
17-
name: 'Test Token',
18+
token: 'test_system_token',
19+
projectId: 'test-project-123',
1820
workspaceId: 1,
19-
systemToken: 'test_system_token',
2021
};
22+
const mockHeaders = new AxiosHeaders({
23+
'Content-Type': 'application/json',
24+
Authorization: `JWT ${params.token}`,
25+
});
2126
const mockTokenResponse = {
2227
id: 1,
23-
name: 'Test Token',
28+
name: 'Project_test-project-123',
2429
workspace: 1,
2530
key: 'test_database_token_key',
2631
permissions: {
@@ -31,23 +36,25 @@ describe('createDatabaseToken', () => {
3136
},
3237
};
3338

39+
openopsCommonMock.createAxiosHeaders.mockReturnValue(mockHeaders);
3440
openopsCommonMock.makeOpenOpsTablesPost.mockResolvedValue(
3541
mockTokenResponse,
3642
);
3743

38-
const result = await createDatabaseToken(params);
44+
const result = await createProjectDatabaseToken(params);
3945

4046
expect(result).toEqual(mockTokenResponse);
47+
expect(openopsCommonMock.createAxiosHeaders).toHaveBeenCalledTimes(1);
48+
expect(openopsCommonMock.createAxiosHeaders).toHaveBeenCalledWith(
49+
params.token,
50+
);
4151
expect(openopsCommonMock.makeOpenOpsTablesPost).toHaveBeenCalledWith(
4252
'api/database/tokens/',
4353
{
44-
name: params.name,
54+
name: 'Project_test-project-123',
4555
workspace: params.workspaceId,
4656
},
47-
new AxiosHeaders({
48-
'Content-Type': 'application/json',
49-
Authorization: `JWT ${params.systemToken}`,
50-
}),
57+
mockHeaders,
5158
);
5259
});
5360
});

0 commit comments

Comments
 (0)