Files
twenty/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-server.entity.ts
T
Thomas Trompette 9e70f5b650 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>
2024-03-25 15:21:23 +01:00

60 lines
1.2 KiB
TypeScript

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;
}