Skip to content

Commit 2ebdd11

Browse files
committed
Refactor infra
1 parent 43b7e05 commit 2ebdd11

10 files changed

Lines changed: 217 additions & 249 deletions

File tree

packages/openops/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,14 @@ export * from './lib/aws/pricing';
3838
export * from './lib/openops-analytics';
3939
export * from './lib/openops-tables/applications-service';
4040
export * from './lib/openops-tables/auth-user';
41+
export * from './lib/openops-tables/context-helpers';
4142
export * from './lib/openops-tables/fields';
4243
export * from './lib/openops-tables/filters';
4344
export * from './lib/openops-tables/openops-tables-common-properties';
4445
export * from './lib/openops-tables/requests-helpers';
4546
export * from './lib/openops-tables/rows';
4647
export * from './lib/openops-tables/tables';
48+
export * from './lib/openops-tables/token-helpers';
4749
export * from './lib/openops-tables/types';
4850

4951
export * from './lib/cli-command-wrapper';

packages/openops/src/lib/openops-tables/context-helpers.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import { ActionContext, PropertyContext } from '@openops/blocks-framework';
2-
import { encryptUtils } from '@openops/server-shared';
2+
import { AppSystemProp, encryptUtils, system } from '@openops/server-shared';
3+
4+
export function shouldUseDatabaseToken(): boolean {
5+
return system.getBoolean(AppSystemProp.USE_DATABASE_TOKEN) ?? false;
6+
}
37

48
export function getTablesDatabaseTokenFromContext(
59
context: ActionContext | PropertyContext,

packages/openops/src/lib/openops-tables/fields.ts

Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,69 @@
1+
import { ActionContext, PropertyContext } from '@openops/blocks-framework';
12
import { IAxiosRetryConfig } from 'axios-retry';
2-
import { makeOpenOpsTablesGet } from '../openops-tables/requests-helpers';
3-
import { createRequestContext, type RequestContext } from './request-context';
3+
import {
4+
createAxiosHeaders,
5+
createAxiosHeadersForOpenOpsTablesBlock,
6+
makeOpenOpsTablesGet,
7+
} from '../openops-tables/requests-helpers';
8+
import { authenticateDefaultUserInOpenOpsTables } from './auth-user';
9+
import {
10+
getTablesDatabaseTokenFromContext,
11+
shouldUseDatabaseToken,
12+
} from './context-helpers';
13+
import {
14+
getTableIdByTableName,
15+
getTableIdByTableNameFromContext,
16+
} from './tables';
417

5-
export async function getFieldsWithContext(
18+
export async function getFieldsFromContext(
619
tableId: number,
7-
ctx: RequestContext,
20+
context: ActionContext | PropertyContext,
821
userFieldNames = true,
922
axiosRetryConfig?: IAxiosRetryConfig,
1023
): Promise<OpenOpsField[]> {
11-
const authenticationHeader = ctx.createHeaders(ctx.token);
12-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
24+
if (!shouldUseDatabaseToken()) {
25+
const { token } = await authenticateDefaultUserInOpenOpsTables();
26+
return await getFields(tableId, token, userFieldNames, axiosRetryConfig);
27+
}
28+
29+
const token = getTablesDatabaseTokenFromContext(context);
30+
const authenticationHeader = createAxiosHeadersForOpenOpsTablesBlock(token);
1331
const fields = await makeOpenOpsTablesGet<any[]>(
1432
`api/database/fields/table/${tableId}/?user_field_names=${userFieldNames}`,
1533
authenticationHeader,
1634
axiosRetryConfig,
1735
);
18-
1936
return fields.flatMap((item) => item);
2037
}
2138

22-
/**
23-
* @deprecated Use getFieldsWithContext with RequestContext instead
24-
*/
39+
export async function getTableFieldsFromContext(
40+
tableName: string,
41+
context: ActionContext | PropertyContext,
42+
axiosRetryConfig?: IAxiosRetryConfig,
43+
): Promise<OpenOpsField[]> {
44+
if (!shouldUseDatabaseToken()) {
45+
const { token } = await authenticateDefaultUserInOpenOpsTables();
46+
const tableId = await getTableIdByTableName(tableName);
47+
return await getFields(tableId, token, false, axiosRetryConfig);
48+
}
49+
50+
const tableId = await getTableIdByTableNameFromContext(tableName, context);
51+
return getFieldsFromContext(tableId, context, false, axiosRetryConfig);
52+
}
53+
2554
export async function getFields(
2655
tableId: number,
2756
token: string,
2857
userFieldNames = true,
2958
axiosRetryConfig?: IAxiosRetryConfig,
30-
useJwt = true,
3159
): Promise<OpenOpsField[]> {
32-
const ctx = createRequestContext(token, useJwt);
33-
return getFieldsWithContext(tableId, ctx, userFieldNames, axiosRetryConfig);
60+
const authenticationHeader = createAxiosHeaders(token);
61+
const fields = await makeOpenOpsTablesGet<any[]>(
62+
`api/database/fields/table/${tableId}/?user_field_names=${userFieldNames}`,
63+
authenticationHeader,
64+
axiosRetryConfig,
65+
);
66+
return fields.flatMap((item) => item);
3467
}
3568

3669
export interface OpenOpsField {

packages/openops/src/lib/openops-tables/request-context.ts

Lines changed: 0 additions & 54 deletions
This file was deleted.

packages/openops/src/lib/openops-tables/rows.ts

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
} from '../openops-tables/filters';
88
import {
99
createAxiosHeaders,
10+
createAxiosHeadersForOpenOpsTablesBlock,
1011
makeOpenOpsTablesDelete,
1112
makeOpenOpsTablesGet,
1213
makeOpenOpsTablesPatch,
@@ -22,6 +23,7 @@ export interface OpenOpsRow {
2223
export interface RowParams {
2324
tableId: number;
2425
token: string;
26+
useDatabaseToken?: boolean;
2527
}
2628

2729
export interface GetRowsParams extends RowParams {
@@ -101,7 +103,9 @@ export async function getRows(getRowsParams: GetRowsParams) {
101103
const paramsString = params.toString();
102104
const baseUrl = `api/database/rows/table/${getRowsParams.tableId}/`;
103105
const url = paramsString ? baseUrl + `?${paramsString}` : baseUrl;
104-
const authenticationHeader = createAxiosHeaders(getRowsParams.token);
106+
const authenticationHeader = getRowsParams.useDatabaseToken
107+
? createAxiosHeadersForOpenOpsTablesBlock(getRowsParams.token)
108+
: createAxiosHeaders(getRowsParams.token);
105109

106110
return executeWithConcurrencyLimit(
107111
async () => {
@@ -128,7 +132,9 @@ export async function updateRow(updateRowParams: UpdateRowParams) {
128132

129133
return executeWithConcurrencyLimit(
130134
async () => {
131-
const authenticationHeader = createAxiosHeaders(updateRowParams.token);
135+
const authenticationHeader = updateRowParams.useDatabaseToken
136+
? createAxiosHeadersForOpenOpsTablesBlock(updateRowParams.token)
137+
: createAxiosHeaders(updateRowParams.token);
132138
return await makeOpenOpsTablesPatch(
133139
url,
134140
updateRowParams.fields,
@@ -150,7 +156,9 @@ export async function upsertRow(upsertRowParams: UpsertRowParams) {
150156

151157
return executeWithConcurrencyLimit(
152158
async () => {
153-
const authenticationHeader = createAxiosHeaders(upsertRowParams.token);
159+
const authenticationHeader = upsertRowParams.useDatabaseToken
160+
? createAxiosHeadersForOpenOpsTablesBlock(upsertRowParams.token)
161+
: createAxiosHeaders(upsertRowParams.token);
154162
return await makeOpenOpsTablesPut(
155163
url,
156164
upsertRowParams.fields,
@@ -172,7 +180,9 @@ export async function addRow(addRowParams: AddRowParams) {
172180

173181
return executeWithConcurrencyLimit(
174182
async () => {
175-
const authenticationHeader = createAxiosHeaders(addRowParams.token);
183+
const authenticationHeader = addRowParams.useDatabaseToken
184+
? createAxiosHeadersForOpenOpsTablesBlock(addRowParams.token)
185+
: createAxiosHeaders(addRowParams.token);
176186
return await makeOpenOpsTablesPost(
177187
url,
178188
addRowParams.fields,
@@ -194,7 +204,9 @@ export async function deleteRow(deleteRowParams: DeleteRowParams) {
194204

195205
return executeWithConcurrencyLimit(
196206
async () => {
197-
const authenticationHeader = createAxiosHeaders(deleteRowParams.token);
207+
const authenticationHeader = deleteRowParams.useDatabaseToken
208+
? createAxiosHeadersForOpenOpsTablesBlock(deleteRowParams.token)
209+
: createAxiosHeaders(deleteRowParams.token);
198210
return await makeOpenOpsTablesDelete(url, authenticationHeader);
199211
},
200212
(error) => {
@@ -212,6 +224,7 @@ export async function getRowByPrimaryKeyValue(
212224
primaryKeyFieldValue: string,
213225
primaryKeyFieldName: any,
214226
primaryKeyFieldType: string,
227+
useDatabaseToken = false,
215228
) {
216229
const rows = await getRows({
217230
tableId: tableId,
@@ -223,6 +236,7 @@ export async function getRowByPrimaryKeyValue(
223236
type: getEqualityFilterType(primaryKeyFieldType),
224237
},
225238
],
239+
useDatabaseToken,
226240
});
227241

228242
if (rows.length > 1) {

0 commit comments

Comments
 (0)