mirror of
https://github.com/aleksilassila/reiverr.git
synced 2026-04-25 10:15:11 +02:00
126 lines
2.8 KiB
TypeScript
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;
|
|
}
|