9e70f5b650
* 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>
60 lines
1.2 KiB
TypeScript
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;
|
|
}
|