import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn, } from 'typeorm'; import { User } from '../../users/entities/user.entity'; import { CalendarConnection } from './calendar-connection.entity'; import { CalendarProvider } from '@nick-tracker/shared-types'; @Entity('calendar_events') export class CalendarEvent { @PrimaryGeneratedColumn('uuid') id: string; @Column() externalId: string; @Column() title: string; @Column({ type: 'timestamp' }) startTime: Date; @Column({ type: 'timestamp' }) endTime: Date; @Column({ default: false }) isAllDay: boolean; @Column({ type: 'enum', enum: CalendarProvider, }) source: CalendarProvider; @Column({ type: 'uuid' }) userId: string; @ManyToOne(() => User, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'userId' }) user: User; @Column({ type: 'uuid', nullable: true }) connectionId: string | null; @ManyToOne(() => CalendarConnection, { onDelete: 'SET NULL' }) @JoinColumn({ name: 'connectionId' }) connection: CalendarConnection | null; @CreateDateColumn() createdAt: Date; @UpdateDateColumn() updatedAt: Date; }