import type { DiscoverSliderType } from '@server/constants/discover'; import { defaultSliders } from '@server/constants/discover'; import { getRepository } from '@server/datasource'; import logger from '@server/logger'; import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; @Entity() class DiscoverSlider { public static async bootstrapSliders(): Promise { const sliderRepository = getRepository(DiscoverSlider); for (const slider of defaultSliders) { const existingSlider = await sliderRepository.findOne({ where: { type: slider.type, }, }); if (!existingSlider) { logger.info('Creating built-in discovery slider', { label: 'Discover Slider', slider, }); await sliderRepository.save(new DiscoverSlider(slider)); } } } @PrimaryGeneratedColumn() public id: number; @Column({ type: 'int' }) public type: DiscoverSliderType; @Column({ type: 'int' }) public order: number; @Column({ default: false }) public isBuiltIn: boolean; @Column({ default: true }) public enabled: boolean; @Column({ nullable: true }) // Title is not required for built in sliders because we will // use translations for them. public title?: string; @Column({ nullable: true }) public data?: string; @CreateDateColumn() public createdAt: Date; @UpdateDateColumn() public updatedAt: Date; constructor(init?: Partial) { Object.assign(this, init); } } export default DiscoverSlider;