Files
3dp-manager/server/src/nodes/entities/node.entity.ts
T
Den Piligrim 26f3bb2934 v2.2.0
2026-05-21 22:58:29 +03:00

90 lines
1.7 KiB
TypeScript

import {
Column,
CreateDateColumn,
Entity,
OneToMany,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';
import { Inbound } from '../../inbounds/entities/inbound.entity';
import { Subscription } from '../../subscriptions/entities/subscription.entity';
import { Tunnel } from '../../tunnels/entities/tunnel.entity';
export enum NodeAuthType {
Password = 'password',
Token = 'token',
}
export enum NodeProtocol {
Http = 'http',
Https = 'https',
}
@Entity()
export class Node {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
name: string;
@Column({ nullable: true })
url?: string;
@Column({ nullable: true })
host?: string;
@Column({ nullable: true })
domain?: string;
@Column({ nullable: true })
ip?: string;
@Column({ nullable: true })
flag?: string;
@Column({ type: 'int', nullable: true })
port?: number;
@Column({
type: 'enum',
enum: NodeProtocol,
default: NodeProtocol.Https,
nullable: true,
})
protocol?: NodeProtocol;
@Column({ type: 'enum', enum: NodeAuthType, default: NodeAuthType.Password })
authType: NodeAuthType;
@Column({ nullable: true })
login?: string;
@Column({ select: false, nullable: true })
password?: string;
@Column({ select: false, nullable: true })
token?: string;
@Column({ default: false })
isMain: boolean;
@Column({ nullable: true })
version?: string;
@OneToMany(() => Subscription, (subscription) => subscription.node)
subscriptions: Subscription[];
@OneToMany(() => Inbound, (inbound) => inbound.node)
inbounds: Inbound[];
@OneToMany(() => Tunnel, (tunnel) => tunnel.node)
tunnels: Tunnel[];
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
}