Add endpoints to create and delete remote server (#4606)

* Build remote server

* Add getters

* Migrate to json inputs

* Use extendable type

* Use regex validation

* Remove acronymes

---------

Co-authored-by: Thomas Trompette <thomast@twenty.com>
This commit is contained in:
Thomas Trompette
2024-03-25 15:21:23 +01:00
committed by GitHub
parent e2af5b8628
commit 9e70f5b650
17 changed files with 496 additions and 3 deletions

View File

@ -0,0 +1,59 @@
import { ObjectType } from '@nestjs/graphql';
import {
Column,
CreateDateColumn,
Entity,
Generated,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';
export enum RemoteServerType {
POSTGRES_FDW = 'postgres_fdw',
}
type PostgresForeignDataWrapperOptions = {
host: string;
port: number;
dbname: string;
};
export type ForeignDataWrapperOptions<T extends RemoteServerType> =
T extends RemoteServerType.POSTGRES_FDW
? PostgresForeignDataWrapperOptions
: never;
export type UserMappingOptions = {
username: string;
password: string;
};
@Entity('remoteServer')
@ObjectType('RemoteServer')
export class RemoteServerEntity<T extends RemoteServerType> {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
@Generated('uuid')
foreignDataWrapperId: string;
@Column({ nullable: true })
foreignDataWrapperType: T;
@Column({ nullable: true, type: 'jsonb' })
foreignDataWrapperOptions: ForeignDataWrapperOptions<T>;
@Column({ nullable: true, type: 'jsonb' })
userMappingOptions: UserMappingOptions;
@Column({ nullable: false, type: 'uuid' })
workspaceId: string;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
}