-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathsettings.ts
More file actions
81 lines (75 loc) · 1.94 KB
/
settings.ts
File metadata and controls
81 lines (75 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import { Type } from "class-transformer";
import {
Column,
Entity,
JoinColumn,
OneToOne,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from "typeorm";
import { ApplicationSettings } from "./application-settings";
export class FrontendSettings {
@Column()
public colorGradientStart!: string;
@Column()
public colorGradientEnd!: string;
@Column()
public colorLink!: string;
@Column()
public colorLinkHover!: string;
@Column()
public loginSignupImage!: string;
@Column()
public sidebarImage!: string;
}
export class EmailTemplate {
@Column()
public subject!: string;
@Column("text")
public htmlTemplate!: string;
@Column("text")
public textTemplate!: string;
}
export class EmailSettings {
@Column()
public sender!: string;
@Type(() => EmailTemplate)
@Column(() => EmailTemplate)
public verifyEmail!: EmailTemplate;
@Type(() => EmailTemplate)
@Column(() => EmailTemplate)
public admittedEmail!: EmailTemplate;
@Column(() => EmailTemplate)
public submittedEmail!: EmailTemplate;
@Column(() => EmailTemplate)
public forgotPasswordEmail!: EmailTemplate;
}
export class ProjectSettings {
@Column({ default: false })
public allowRatingProjects!: boolean;
}
@Entity()
export class Settings {
@PrimaryGeneratedColumn()
public readonly id!: number;
@UpdateDateColumn()
public readonly updatedAt!: Date;
@Type(() => ApplicationSettings)
@OneToOne(() => ApplicationSettings, { cascade: true, eager: true })
@JoinColumn()
public application!: ApplicationSettings;
@Type(() => FrontendSettings)
@Column(() => FrontendSettings)
public frontend!: FrontendSettings;
@Type(() => EmailSettings)
@Column(() => EmailSettings)
public email!: EmailSettings;
@Type(() => ProjectSettings)
@Column(() => ProjectSettings)
public rating!: ProjectSettings;
}
/**
* Value number of characters that can be stored
* in the database for the email template
*/
export const EmailTemplateSize = 65_536;