Repository navigation
Expand file tree
/
Copy pathmodel.js
More file actions
90 lines (84 loc) · 1.56 KB
/
Copy pathmodel.js
File metadata and controls
90 lines (84 loc) · 1.56 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
82
83
84
85
86
87
88
89
90
const Sequelize = require('sequelize');
const sequelize = new Sequelize({
dialect: 'sqlite',
storage: './database.sqlite3'
});
class Profile extends Sequelize.Model {}
Profile.init(
{
firstName: {
type: Sequelize.STRING,
allowNull: false
},
lastName: {
type: Sequelize.STRING,
allowNull: false
},
profession: {
type: Sequelize.STRING,
allowNull: false
},
balance:{
type:Sequelize.DECIMAL(12,2)
},
type: {
type: Sequelize.ENUM('client', 'contractor')
}
},
{
sequelize,
modelName: 'Profile'
}
);
class Contract extends Sequelize.Model {}
Contract.init(
{
terms: {
type: Sequelize.TEXT,
allowNull: false
},
status:{
type: Sequelize.ENUM('new','in_progress','terminated')
}
},
{
sequelize,
modelName: 'Contract'
}
);
class Job extends Sequelize.Model {}
Job.init(
{
description: {
type: Sequelize.TEXT,
allowNull: false
},
price:{
type: Sequelize.DECIMAL(12,2),
allowNull: false
},
paid: {
type: Sequelize.BOOLEAN,
default:false
},
paymentDate:{
type: Sequelize.DATE
}
},
{
sequelize,
modelName: 'Job'
}
);
Profile.hasMany(Contract, {as :'Contractor',foreignKey:'ContractorId'})
Contract.belongsTo(Profile, {as: 'Contractor'})
Profile.hasMany(Contract, {as : 'Client', foreignKey:'ClientId'})
Contract.belongsTo(Profile, {as: 'Client'})
Contract.hasMany(Job)
Job.belongsTo(Contract)
module.exports = {
sequelize,
Profile,
Contract,
Job
};