Files
reiverr/backend/src/user/user.entity.ts
Aleksi Lassila dc1b25dc22 feat: Onboarding
2024-05-25 00:28:13 +03:00

126 lines
2.8 KiB
TypeScript

import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
import { ApiProperty } from '@nestjs/swagger';
export class SonarrSettings {
@ApiProperty({ required: true })
apiKey: string;
@ApiProperty({ required: true })
baseUrl: string;
@ApiProperty({ required: true })
qualityProfileId: number;
@ApiProperty({ required: true })
rootFolderPath: string;
@ApiProperty({ required: true })
languageProfileId: number;
}
export class RadarrSettings {
@ApiProperty({ required: true })
apiKey: string;
@ApiProperty({ required: true })
baseUrl: string;
@ApiProperty({ required: true })
qualityProfileId: number;
@ApiProperty({ required: true })
rootFolderPath: string;
}
export class JellyfinSettings {
@ApiProperty({ required: true })
apiKey: string;
@ApiProperty({ required: true })
baseUrl: string;
@ApiProperty({ required: true })
userId: string;
}
export class TmdbSettings {
@ApiProperty({ required: true })
sessionId: string;
@ApiProperty({ required: true })
userId: string;
}
export class Settings {
@ApiProperty({ required: true })
autoplayTrailers: boolean;
@ApiProperty({ required: true })
language: string;
@ApiProperty({ required: true })
animationDuration: number;
// discover: {
// region: string,
// excludeLibraryItems: true,
// includedLanguages: 'en'
// },
@ApiProperty({ required: true, type: SonarrSettings })
sonarr: SonarrSettings;
@ApiProperty({ required: true, type: RadarrSettings })
radarr: RadarrSettings;
@ApiProperty({ required: true, type: JellyfinSettings })
jellyfin: JellyfinSettings;
@ApiProperty({ required: true, type: TmdbSettings })
tmdb: TmdbSettings;
}
const DEFAULT_SETTINGS: Settings = {
autoplayTrailers: true,
language: 'en',
animationDuration: 300,
// discover: {
// region: 'US',
// excludeLibraryItems: true,
// includedLanguages: 'en'
// },
sonarr: {
apiKey: '',
baseUrl: '',
qualityProfileId: 0,
rootFolderPath: '',
languageProfileId: 0,
},
radarr: {
apiKey: '',
baseUrl: '',
qualityProfileId: 0,
rootFolderPath: '',
},
jellyfin: {
apiKey: '',
baseUrl: '',
userId: '',
},
tmdb: {
sessionId: '',
userId: '',
},
};
@Entity()
export class User {
@ApiProperty({ required: true })
@PrimaryGeneratedColumn('uuid')
id: string;
@ApiProperty({ required: true })
@Column({ unique: true })
name: string;
@ApiProperty({ required: true })
@Column()
password: string;
@ApiProperty({ required: true })
@Column({ default: false })
isAdmin: boolean = false;
@ApiProperty({ required: false })
@Column({ default: false })
onboardingDone: boolean = false;
@ApiProperty({ required: true, type: Settings })
@Column('json', { default: JSON.stringify(DEFAULT_SETTINGS) })
settings = DEFAULT_SETTINGS;
}