attributes.ts
919 Bytes
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
import { Model } from "sequelize/lib/model";
interface UserCreationAttributes {
name: string;
}
interface UserAttributes extends UserCreationAttributes {
id: number;
}
class User
extends Model<UserAttributes, UserCreationAttributes>
implements UserAttributes {
public id!: number;
public name!: string;
public readonly projects?: Project[];
public readonly address?: Address;
}
interface ProjectCreationAttributes {
ownerId: number;
name: string;
}
interface ProjectAttributes extends ProjectCreationAttributes {
id: number;
}
class Project
extends Model<ProjectAttributes, ProjectCreationAttributes>
implements ProjectAttributes {
public id!: number;
public ownerId!: number;
public name!: string;
}
class Address extends Model {
public userId!: number;
public address!: string;
}
// both models should be accepted in include
User.findAll({ include: [Project, Address] });