import {
  Column,
  Entity,
  Index,
  PrimaryColumn
} from 'typeorm';

export type ServerPluginRequirementStatus = 'required' | 'optional' | 'recommended' | 'blocked' | 'incompatible';

@Entity('server_plugin_requirements')
export class ServerPluginRequirementEntity {
  @PrimaryColumn('text')
  serverId!: string;

  @PrimaryColumn('text')
  pluginId!: string;

  @Index()
  @Column('text')
  status!: ServerPluginRequirementStatus;

  @Column('text', { nullable: true })
  versionRange!: string | null;

  @Column('text', { nullable: true })
  reason!: string | null;

  @Column('text', { nullable: true })
  installUrl!: string | null;

  @Column('text', { nullable: true })
  sourceUrl!: string | null;

  @Column('text', { nullable: true })
  manifestJson!: string | null;

  @Column('text', { nullable: true })
  configuredBy!: string | null;

  @Column('integer')
  createdAt!: number;

  @Column('integer')
  updatedAt!: number;
}
