@Entity('recurrence_time_policies')
@Unique(['calendarEvent'])
export class RecurrenceTimePolicy {
@PrimaryGeneratedColumn({ name: 'recurrence_time_policy_id' })
id!: number
@OneToOne(
() => CalendarEvent,
(calendarEvent) => calendarEvent.recurrenceTimePolicy,
{
onDelete: 'CASCADE',
onUpdate: 'CASCADE',
orphanedRowAction: 'delete',
},
)
@JoinColumn({ name: 'calendar_event_id' })
calendarEvent!: CalendarEvent
@Column({ name: 'calendar_event_id' })
calendarEventId!: number
@Column({
name: 'frequency',
type: 'enum',
enum: RecurrenceFrequency,
enumName: 'recurrence_frequencies',
nullable: false,
})
frequency!: RecurrenceFrequency
@Column({ name: 'interval', type: 'int', nullable: false, default: 1 })
interval!: number
@Column({
name: 'byweekday',
type: 'smallint',
array: true,
nullable: true,
})
byWeekday?: number[] | null
@Column({
name: 'bymonthday',
type: 'smallint',
array: true,
nullable: true,
})
byMonthDay?: number[] | null
@Column({ name: 'bysetpos', type: 'smallint', array: true, nullable: true })
bySetPos?: number[] | null
@Column({ name: 'bymonth', type: 'smallint', array: true, nullable: true })
byMonth?: number[] | null
@Column({ name: 'byhour', type: 'smallint', array: true, nullable: true })
byHour?: number[] | null
@Column({ name: 'byminute', type: 'smallint', array: true, nullable: true })
byMinute?: number[] | null
@Column({ name: 'count', type: 'int', nullable: true })
count?: number | null
@Column({ name: 'until', type: 'timestamptz', nullable: true })
until?: Date | null
}