|
|
import { Entity, PrimaryGeneratedColumn, Column, OneToOne, JoinColumn, CreateDateColumn, UpdateDateColumn, Index } from 'typeorm'; |
|
|
import { User } from './User'; |
|
|
|
|
|
export enum VerificationStatus { |
|
|
UNVERIFIED = 'UNVERIFIED', |
|
|
PENDING = 'PENDING', |
|
|
} |
|
|
|
|
|
@Entity('creator_profiles') |
|
|
@Index(['username'], { unique: true }) |
|
|
export class CreatorProfile { |
|
|
@PrimaryGeneratedColumn('uuid') |
|
|
id: string; |
|
|
|
|
|
@OneToOne(() => User) |
|
|
@JoinColumn({ name: 'userId' }) |
|
|
user: User; |
|
|
|
|
|
@Column({ unique: true }) |
|
|
userId: string; |
|
|
|
|
|
|
|
|
@Column() |
|
|
fullName: string; |
|
|
|
|
|
@Column({ unique: true }) |
|
|
username: string; |
|
|
|
|
|
@Column({ nullable: true }) |
|
|
profileImage?: string; |
|
|
|
|
|
@Column({ length: 200, nullable: true }) |
|
|
bio?: string; |
|
|
|
|
|
|
|
|
@Column({ nullable: true }) |
|
|
organization?: string; |
|
|
|
|
|
@Column({ nullable: true }) |
|
|
role?: string; |
|
|
|
|
|
@Column({ nullable: true }) |
|
|
website?: string; |
|
|
|
|
|
@Column({ nullable: true }) |
|
|
linkedinUrl?: string; |
|
|
|
|
|
@Column({ nullable: true }) |
|
|
githubUrl?: string; |
|
|
|
|
|
@Column({ nullable: true }) |
|
|
huggingfaceUrl?: string; |
|
|
|
|
|
|
|
|
@Column('text', { array: true, default: '{}' }) |
|
|
primaryLanguages: string[]; |
|
|
|
|
|
@Column('text', { array: true, default: '{}' }) |
|
|
frameworks: string[]; |
|
|
|
|
|
@Column('text', { array: true, default: '{}' }) |
|
|
agentSpecialties: string[]; |
|
|
|
|
|
@Column({ nullable: true }) |
|
|
preferredCompute?: string; |
|
|
|
|
|
@Column({ nullable: true }) |
|
|
endpointHosting?: string; |
|
|
|
|
|
|
|
|
@Column({ nullable: true }) |
|
|
walletAddress?: string; |
|
|
|
|
|
@Column('jsonb', { nullable: true }) |
|
|
bankAccount?: { accountName?: string; accountNumber?: string; bankCode?: string }; |
|
|
|
|
|
@Column({ nullable: true }) |
|
|
preferredCurrency?: string; |
|
|
|
|
|
@Column({ nullable: true }) |
|
|
country?: string; |
|
|
|
|
|
@Column({ nullable: true }) |
|
|
taxId?: string; |
|
|
|
|
|
|
|
|
@Column({ nullable: true }) |
|
|
idDocumentUrl?: string; |
|
|
|
|
|
@Column({ type: 'enum', enum: VerificationStatus, default: VerificationStatus.UNVERIFIED }) |
|
|
verificationStatus: VerificationStatus; |
|
|
|
|
|
@Column({ default: false }) |
|
|
portfolioApproved: boolean; |
|
|
|
|
|
@CreateDateColumn() |
|
|
createdAt: Date; |
|
|
|
|
|
@UpdateDateColumn() |
|
|
updatedAt: Date; |
|
|
} |
|
|
|