Build stripe integration on backend side (#5246)
Adding stripe integration by making the server logic independent of the input fields: - query factories (remote server, foreign data wrapper, foreign table) to loop on fields and values without hardcoding the names of the fields - adding stripe input and type - add the logic to handle static schema. Simply creating a big object to store into the server Additional work: - rename username field to user. This is the input intended for postgres user mapping and we now need a matching by name --------- Co-authored-by: Thomas Trompette <thomast@twenty.com>
This commit is contained in:
@ -20,11 +20,11 @@ import {
|
||||
validateObjectAgainstInjections,
|
||||
validateStringAgainstInjections,
|
||||
} from 'src/engine/metadata-modules/remote-server/utils/validate-remote-server-input.utils';
|
||||
import { ForeignDataWrapperQueryFactory } from 'src/engine/api/graphql/workspace-query-builder/factories/foreign-data-wrapper-query.factory';
|
||||
import { ForeignDataWrapperServerQueryFactory } from 'src/engine/api/graphql/workspace-query-builder/factories/foreign-data-wrapper-server-query.factory';
|
||||
import { RemoteTableService } from 'src/engine/metadata-modules/remote-server/remote-table/remote-table.service';
|
||||
import { UpdateRemoteServerInput } from 'src/engine/metadata-modules/remote-server/dtos/update-remote-server.input';
|
||||
import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service';
|
||||
import { updateRemoteServerRawQuery } from 'src/engine/metadata-modules/remote-server/utils/build-update-remote-server-raw-query.utils';
|
||||
import { buildUpdateRemoteServerRawQuery } from 'src/engine/metadata-modules/remote-server/utils/build-update-remote-server-raw-query.utils';
|
||||
import { validateRemoteServerType } from 'src/engine/metadata-modules/remote-server/utils/validate-remote-server-type.util';
|
||||
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
||||
|
||||
@ -38,7 +38,7 @@ export class RemoteServerService<T extends RemoteServerType> {
|
||||
@InjectDataSource('metadata')
|
||||
private readonly metadataDataSource: DataSource,
|
||||
private readonly environmentService: EnvironmentService,
|
||||
private readonly foreignDataWrapperQueryFactory: ForeignDataWrapperQueryFactory,
|
||||
private readonly foreignDataWrapperServerQueryFactory: ForeignDataWrapperServerQueryFactory,
|
||||
private readonly remoteTableService: RemoteTableService,
|
||||
private readonly workspaceDataSourceService: WorkspaceDataSourceService,
|
||||
@InjectRepository(FeatureFlagEntity, 'core')
|
||||
@ -85,7 +85,7 @@ export class RemoteServerService<T extends RemoteServerType> {
|
||||
);
|
||||
|
||||
const foreignDataWrapperQuery =
|
||||
this.foreignDataWrapperQueryFactory.createForeignDataWrapper(
|
||||
this.foreignDataWrapperServerQueryFactory.createForeignDataWrapperServer(
|
||||
createdRemoteServer.foreignDataWrapperId,
|
||||
remoteServerInput.foreignDataWrapperType,
|
||||
remoteServerInput.foreignDataWrapperOptions,
|
||||
@ -95,7 +95,7 @@ export class RemoteServerService<T extends RemoteServerType> {
|
||||
|
||||
if (remoteServerInput.userMappingOptions) {
|
||||
const userMappingQuery =
|
||||
this.foreignDataWrapperQueryFactory.createUserMapping(
|
||||
this.foreignDataWrapperServerQueryFactory.createUserMapping(
|
||||
createdRemoteServer.foreignDataWrapperId,
|
||||
remoteServerInput.userMappingOptions,
|
||||
);
|
||||
@ -167,18 +167,20 @@ export class RemoteServerService<T extends RemoteServerType> {
|
||||
!isEmpty(partialRemoteServerWithUpdates.foreignDataWrapperOptions)
|
||||
) {
|
||||
const foreignDataWrapperQuery =
|
||||
this.foreignDataWrapperQueryFactory.updateForeignDataWrapper({
|
||||
foreignDataWrapperId,
|
||||
foreignDataWrapperOptions:
|
||||
partialRemoteServerWithUpdates.foreignDataWrapperOptions,
|
||||
});
|
||||
this.foreignDataWrapperServerQueryFactory.updateForeignDataWrapperServer(
|
||||
{
|
||||
foreignDataWrapperId,
|
||||
foreignDataWrapperOptions:
|
||||
partialRemoteServerWithUpdates.foreignDataWrapperOptions,
|
||||
},
|
||||
);
|
||||
|
||||
await entityManager.query(foreignDataWrapperQuery);
|
||||
}
|
||||
|
||||
if (!isEmpty(partialRemoteServerWithUpdates.userMappingOptions)) {
|
||||
const userMappingQuery =
|
||||
this.foreignDataWrapperQueryFactory.updateUserMapping(
|
||||
this.foreignDataWrapperServerQueryFactory.updateUserMapping(
|
||||
foreignDataWrapperId,
|
||||
partialRemoteServerWithUpdates.userMappingOptions,
|
||||
);
|
||||
@ -254,7 +256,7 @@ export class RemoteServerService<T extends RemoteServerType> {
|
||||
Pick<RemoteServerEntity<RemoteServerType>, 'workspaceId' | 'id'>,
|
||||
): Promise<RemoteServerEntity<RemoteServerType>> {
|
||||
const [parameters, rawQuery] =
|
||||
updateRemoteServerRawQuery(remoteServerToUpdate);
|
||||
buildUpdateRemoteServerRawQuery(remoteServerToUpdate);
|
||||
|
||||
const updateResult = await this.workspaceDataSourceService.executeRawQuery(
|
||||
rawQuery,
|
||||
|
||||
Reference in New Issue
Block a user