import { Column, Entity, Index, PrimaryGeneratedColumn } from 'typeorm'; import { TimestampedEntity } from './timestamped.entity'; export enum OrganizationMembershipRole { MEMBER='MEMBER', LEAD_MEMBER='LEAD_MEMBER', OTHER='OTHER' } @Entity({name:'organization_memberships'}) @Index('idx_organization_memberships_parent_id',['parentOrganizationId']) @Index('idx_organization_memberships_member_id',['memberOrganizationId']) @Index('idx_organization_memberships_valid_until',['validUntil']) export class OrganizationMembership extends TimestampedEntity { @PrimaryGeneratedColumn('uuid') id!:string; @Column({name:'parent_organization_id',type:'uuid'}) parentOrganizationId!:string; @Column({name:'member_organization_id',type:'uuid'}) memberOrganizationId!:string; @Column({type:'enum',enum:OrganizationMembershipRole,enumName:'organization_membership_role'}) role!:OrganizationMembershipRole; @Column({name:'participation_percent',type:'numeric',precision:7,scale:4,nullable:true}) participationPercent!:string|null; @Column({name:'valid_from',type:'date',default:()=> 'CURRENT_DATE'}) validFrom!:string; @Column({name:'valid_until',type:'date',nullable:true}) validUntil!:string|null; @Column({name:'source_document_id',type:'uuid',nullable:true}) sourceDocumentId!:string|null; @Column({type:'text',nullable:true}) notes!:string|null; @Column({name:'end_reason',type:'text',nullable:true}) endReason!:string|null; @Column({name:'created_by',type:'uuid',nullable:true}) createdBy!:string|null; @Column({name:'ended_by',type:'uuid',nullable:true}) endedBy!:string|null; }