import { Column, Entity, PrimaryColumn } from 'typeorm';
import { ApiProperty } from '@nestjs/swagger';
import {
  encodeBigNumberKey,
  decodeBigNumberKey,
} from '../utils/big-number-key';

@Entity('project_users', { schema: 'public' })
export class ProjectUserEntity {
  @PrimaryColumn({
    name: 'project_id',
    transformer: {
      from: (x) => encodeBigNumberKey(x),
      to: (x) => decodeBigNumberKey(x),
    },
  })
  @ApiProperty({})
  projectId: string;

  @PrimaryColumn('integer', {
    name: 'user_id',
  })
  @ApiProperty({})
  user: number;

  @PrimaryColumn('integer', {
    name: 'user_role_num',
  })
  @ApiProperty({})
  userRoleNum: number;

  @Column('varchar', {
    name: 'user_name',
    nullable: false,
  })
  userName: string;

  @Column('timestamp with time zone', {
    name: 'joined_at',
    nullable: false,
    default: () => 'CURRENT_TIMESTAMP',
  })
  @ApiProperty({})
  joinedAt: string;

  @Column('timestamp with time zone', {
    name: 'left_at',
  })
  @ApiProperty({})
  leftAt: string;
}
