-
Notifications
You must be signed in to change notification settings - Fork 70
/
subscription.model.ts
113 lines (99 loc) · 2.12 KB
/
subscription.model.ts
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// Copyright (c) 2023 Sourcefuse Technologies
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
import {AnyObject, belongsTo, model, property} from '@loopback/repository';
import {
ExternalIdentifierEnabledEntity,
UserModifiableEntity,
} from '@sourceloop/core';
import {Calendar, CalendarWithRelations} from './calendar.model';
import {AccessRoleType} from './enums/access-role.enum';
@model({
name: 'subscriptions',
})
export class Subscription
extends UserModifiableEntity<Subscription>
implements ExternalIdentifierEnabledEntity
{
@property({
type: 'string',
id: true,
})
id?: string;
@property({
type: 'string',
default: AccessRoleType.Reader,
name: 'access_role',
jsonSchema: {
enum: [
AccessRoleType.FreeBusyReader,
AccessRoleType.Reader,
AccessRoleType.Writer,
AccessRoleType.Owner,
],
},
})
accessRole?: AccessRoleType;
@property({
type: 'string',
name: 'bg_color',
})
bgColor?: string;
@property({
type: 'string',
name: 'fg_color',
})
fgColor?: string;
@property({
type: 'boolean',
default: false,
name: 'is_hidden',
})
isHidden?: boolean;
@property({
type: 'boolean',
default: false,
name: 'is_primary',
})
isPrimary?: boolean;
@property({
type: 'string',
required: true,
name: 'identifier',
})
identifier: string;
@property({
type: 'object',
name: 'default_reminders',
})
defaultReminders?: object;
@property({
type: 'object',
name: 'notification_settings',
})
notificationSettings?: object;
@belongsTo(
() => Calendar,
{keyFrom: 'calendarId', name: 'calendar'},
{
name: 'calendar_id',
required: true,
},
)
calendarId: string;
@property({
type: 'string',
name: 'ext_id',
})
extId?: string;
@property({
type: 'object',
name: 'ext_metadata',
})
extMetadata?: AnyObject;
}
export interface SubscriptionRelations {
calendar?: CalendarWithRelations;
}
export type SubscriptionWithRelations = Subscription & SubscriptionRelations;