@itleanchatbot/shared-models-js-postgres 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +59 -0
- package/package.json +3 -3
- package/src/attendances.js +70 -0
- package/src/branches.js +47 -0
- package/src/channelConfigurations.js +41 -0
- package/src/channelTypes.js +26 -0
- package/src/channels.js +54 -0
- package/src/comments.js +27 -0
- package/src/departments.js +35 -0
- package/src/enterprises.js +29 -0
- package/src/entity.js +34 -0
- package/src/entityValues.js +63 -0
- package/src/files.js +35 -0
- package/src/ibmProvider.js +43 -0
- package/src/intelligence.js +45 -0
- package/src/intention.js +36 -0
- package/src/intentionValue.js +31 -0
- package/src/lines.js +48 -0
- package/src/profile.js +23 -0
- package/src/profiles_permission.js +25 -0
- package/src/sessions.js +44 -0
- package/src/skill.js +104 -0
- package/src/skill_apiResources.js +31 -0
- package/src/socketClients.js +45 -0
- package/src/subDepartments.js +35 -0
- package/src/synonyms.js +66 -0
- package/src/systemUsers.js +50 -0
- package/src/systemUsers_Lines.js +25 -0
- package/src/systemUsers_profiles.js +25 -0
- package/src/transhipConversations.js +34 -0
package/index.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
const attendances = require('/src/attendances')
|
|
2
|
+
const branches = require('/src/branches')
|
|
3
|
+
const channelConfigurations = require('/src/channelConfigurations')
|
|
4
|
+
const channels = require('/src/channels')
|
|
5
|
+
const channelTypes = require('/src/channelTypes')
|
|
6
|
+
const comments = require('/src/comments')
|
|
7
|
+
const departments = require('/src/departments')
|
|
8
|
+
const enterprises = require('/src/enterprises')
|
|
9
|
+
const entity = require('/src/entity')
|
|
10
|
+
const entityValues = require('/src/entityValues')
|
|
11
|
+
const files = require('/src/files')
|
|
12
|
+
const ibmProvider = require('/src/ibmProvider')
|
|
13
|
+
const intelligence = require('/src/intelligence')
|
|
14
|
+
const intention = require('/src/intention')
|
|
15
|
+
const intentionValue = require('/src/intentionValue')
|
|
16
|
+
const lines = require('/src/lines')
|
|
17
|
+
const profile = require('/src/profile')
|
|
18
|
+
const profiles_permission = require('/src/profiles_permission')
|
|
19
|
+
const sessions = require('/src/sessions')
|
|
20
|
+
const skill_apiResources = require('/src/skill_apiResources')
|
|
21
|
+
const skill = require('/src/skill')
|
|
22
|
+
const socketClients = require('/src/socketClients')
|
|
23
|
+
const subDepartments = require('/src/subDepartments')
|
|
24
|
+
const synonyms = require('/src/synonyms')
|
|
25
|
+
const systemUsers_Lines = require('/src/systemUsers_Lines')
|
|
26
|
+
const systemUsers_profiles = require('/src/systemUsers_profiles')
|
|
27
|
+
const systemUsers = require('/src/systemUsers')
|
|
28
|
+
const transhipConversations = require('/src/transhipConversations')
|
|
29
|
+
|
|
30
|
+
module.exports = {
|
|
31
|
+
attendances,
|
|
32
|
+
branches,
|
|
33
|
+
channelConfigurations,
|
|
34
|
+
channels,
|
|
35
|
+
channelTypes,
|
|
36
|
+
comments,
|
|
37
|
+
departments,
|
|
38
|
+
enterprises,
|
|
39
|
+
entity,
|
|
40
|
+
entityValues,
|
|
41
|
+
files,
|
|
42
|
+
ibmProvider,
|
|
43
|
+
intelligence,
|
|
44
|
+
intention,
|
|
45
|
+
intentionValue,
|
|
46
|
+
lines,
|
|
47
|
+
profile,
|
|
48
|
+
profiles_permission,
|
|
49
|
+
sessions,
|
|
50
|
+
skill_apiResources,
|
|
51
|
+
skill,
|
|
52
|
+
socketClients,
|
|
53
|
+
subDepartments,
|
|
54
|
+
synonyms,
|
|
55
|
+
systemUsers_Lines,
|
|
56
|
+
systemUsers_profiles,
|
|
57
|
+
systemUsers,
|
|
58
|
+
transhipConversations
|
|
59
|
+
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itleanchatbot/shared-models-js-postgres",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "Shared Models JS Postgres",
|
|
5
|
-
"main": "
|
|
5
|
+
"main": "index.js",
|
|
6
6
|
"license": "ISC",
|
|
7
7
|
"author": "Wilber da Silva <wilber.costa@itlean.com>",
|
|
8
8
|
"scripts": {
|
|
9
|
-
"lint": "npx eslint \"
|
|
9
|
+
"lint": "npx eslint \"/**/*.js\" --fix",
|
|
10
10
|
"format": "npm run format:src",
|
|
11
11
|
"format:src": "npx prettier --write \"src/**/*.js\""
|
|
12
12
|
},
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
exports.AttendancesModel = (sequelize, DataTypes) => {
|
|
2
|
+
const Attendances = sequelize.define('Attendances', {
|
|
3
|
+
SessionId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'Sessions',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
LineId: {
|
|
14
|
+
type: DataTypes.UUID,
|
|
15
|
+
allowNull: false,
|
|
16
|
+
references: {
|
|
17
|
+
model: 'Lines',
|
|
18
|
+
key: 'id',
|
|
19
|
+
},
|
|
20
|
+
onDelete: 'RESTRICT',
|
|
21
|
+
onUpdate: 'CASCADE',
|
|
22
|
+
},
|
|
23
|
+
SystemUserId: {
|
|
24
|
+
type: DataTypes.UUID,
|
|
25
|
+
allowNull: true,
|
|
26
|
+
references: {
|
|
27
|
+
model: 'SystemUsers',
|
|
28
|
+
key: 'id',
|
|
29
|
+
},
|
|
30
|
+
onDelete: 'RESTRICT',
|
|
31
|
+
onUpdate: 'CASCADE',
|
|
32
|
+
},
|
|
33
|
+
status: {
|
|
34
|
+
type: DataTypes.ENUM(['waiting', 'started', 'closed', 'transfered']),
|
|
35
|
+
allowNull: false,
|
|
36
|
+
validate: {
|
|
37
|
+
notEmpty: false,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
startedAt: {
|
|
41
|
+
allowNull: true,
|
|
42
|
+
type: DataTypes.DATE,
|
|
43
|
+
},
|
|
44
|
+
closedAt: {
|
|
45
|
+
allowNull: true,
|
|
46
|
+
type: DataTypes.DATE,
|
|
47
|
+
},
|
|
48
|
+
PreviousAttendanceId: {
|
|
49
|
+
type: DataTypes.UUID,
|
|
50
|
+
allowNull: true,
|
|
51
|
+
references: {
|
|
52
|
+
model: 'Attendances',
|
|
53
|
+
key: 'id',
|
|
54
|
+
},
|
|
55
|
+
onDelete: 'RESTRICT',
|
|
56
|
+
onUpdate: 'CASCADE',
|
|
57
|
+
},
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
Attendances.associate = models => {
|
|
61
|
+
Attendances.belongsTo(models.Sessions)
|
|
62
|
+
Attendances.belongsTo(models.SystemUsers)
|
|
63
|
+
Attendances.belongsTo(models.Lines)
|
|
64
|
+
Attendances.hasMany(models.TranshipConversations)
|
|
65
|
+
Attendances.hasOne(models.Attendances, { as: 'PreviousAttendance' })
|
|
66
|
+
Attendances.hasMany(models.Comments)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return Attendances
|
|
70
|
+
}
|
package/src/branches.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
exports.BranchesModel = (sequelize, DataTypes) => {
|
|
2
|
+
const Branches = sequelize.define('Branches', {
|
|
3
|
+
EnterpriseId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'Enterprises',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
internalId: {
|
|
14
|
+
allowNull: false,
|
|
15
|
+
type: DataTypes.STRING(50),
|
|
16
|
+
validate: {
|
|
17
|
+
notEmpty: true,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
name: {
|
|
21
|
+
allowNull: false,
|
|
22
|
+
type: DataTypes.STRING(50),
|
|
23
|
+
validate: {
|
|
24
|
+
notEmpty: true,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
phone: {
|
|
28
|
+
allowNull: true,
|
|
29
|
+
type: DataTypes.STRING(50),
|
|
30
|
+
},
|
|
31
|
+
website: {
|
|
32
|
+
allowNull: true,
|
|
33
|
+
type: DataTypes.STRING(255),
|
|
34
|
+
},
|
|
35
|
+
urlApi: {
|
|
36
|
+
allowNull: true,
|
|
37
|
+
type: DataTypes.STRING(255),
|
|
38
|
+
},
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
Branches.associate = models => {
|
|
42
|
+
Branches.belongsTo(models.Enterprises)
|
|
43
|
+
Branches.hasMany(models.Lines)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return Branches
|
|
47
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
exports.ChannelConfigurationsModel = (sequelize, DataTypes) => {
|
|
2
|
+
const ChannelConfigurations = sequelize.define('ChannelConfigurations', {
|
|
3
|
+
ChannelTypeId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'ChannelTypes',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
fieldName: {
|
|
14
|
+
type: DataTypes.STRING(50),
|
|
15
|
+
allowNull: false,
|
|
16
|
+
validate: {
|
|
17
|
+
notEmpty: true,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
fieldType: {
|
|
21
|
+
type: DataTypes.STRING(50),
|
|
22
|
+
allowNull: false,
|
|
23
|
+
validate: {
|
|
24
|
+
notEmpty: true,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
fieldLabel: {
|
|
28
|
+
type: DataTypes.STRING(50),
|
|
29
|
+
allowNull: false,
|
|
30
|
+
validate: {
|
|
31
|
+
notEmpty: true,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
ChannelConfigurations.associate = models => {
|
|
37
|
+
ChannelConfigurations.belongsTo(models.ChannelTypes)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return ChannelConfigurations
|
|
41
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
exports.ChannelTypesModel = (sequelize, DataTypes) => {
|
|
2
|
+
const ChannelTypes = sequelize.define('ChannelTypes', {
|
|
3
|
+
channelName: {
|
|
4
|
+
allowNull: false,
|
|
5
|
+
type: DataTypes.STRING(50),
|
|
6
|
+
unique: true,
|
|
7
|
+
validate: {
|
|
8
|
+
notEmpty: true,
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
channelLabel: {
|
|
12
|
+
allowNull: false,
|
|
13
|
+
type: DataTypes.STRING(50),
|
|
14
|
+
validate: {
|
|
15
|
+
notEmpty: true,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
ChannelTypes.associate = models => {
|
|
21
|
+
ChannelTypes.hasMany(models.ChannelConfigurations)
|
|
22
|
+
ChannelTypes.hasMany(models.Channels)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return ChannelTypes
|
|
26
|
+
}
|
package/src/channels.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
exports.ChannelsModel = (sequelize, DataTypes) => {
|
|
2
|
+
const Channels = sequelize.define('Channels', {
|
|
3
|
+
SkillId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'Skill',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
ChannelTypeId: {
|
|
14
|
+
type: DataTypes.UUID,
|
|
15
|
+
allowNull: false,
|
|
16
|
+
references: {
|
|
17
|
+
model: 'ChannelTypes',
|
|
18
|
+
key: 'id',
|
|
19
|
+
},
|
|
20
|
+
onDelete: 'RESTRICT',
|
|
21
|
+
onUpdate: 'CASCADE',
|
|
22
|
+
},
|
|
23
|
+
FileId: {
|
|
24
|
+
type: DataTypes.UUID,
|
|
25
|
+
allowNull: true,
|
|
26
|
+
references: {
|
|
27
|
+
model: 'Files',
|
|
28
|
+
key: 'id',
|
|
29
|
+
},
|
|
30
|
+
onDelete: 'RESTRICT',
|
|
31
|
+
onUpdate: 'CASCADE',
|
|
32
|
+
},
|
|
33
|
+
name: {
|
|
34
|
+
type: DataTypes.STRING(50),
|
|
35
|
+
allowNull: false,
|
|
36
|
+
validate: {
|
|
37
|
+
notEmpty: true,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
configurations: {
|
|
41
|
+
type: DataTypes.JSON,
|
|
42
|
+
allowNull: false,
|
|
43
|
+
},
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
Channels.associate = models => {
|
|
47
|
+
Channels.belongsTo(models.ChannelTypes)
|
|
48
|
+
Channels.belongsTo(models.Skill)
|
|
49
|
+
Channels.belongsTo(models.Files)
|
|
50
|
+
Channels.hasMany(models.Sessions)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return Channels
|
|
54
|
+
}
|
package/src/comments.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
exports.CommentsModel = (sequelize, DataTypes) => {
|
|
2
|
+
const Comments = sequelize.define('Comments', {
|
|
3
|
+
AttendanceId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'Attendances',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
content: {
|
|
14
|
+
type: DataTypes.TEXT,
|
|
15
|
+
allowNull: false,
|
|
16
|
+
validate: {
|
|
17
|
+
notEmpty: true,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
Comments.associate = models => {
|
|
23
|
+
Comments.belongsTo(models.Attendances)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return Comments
|
|
27
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
exports.DepartmentsModel = (sequelize, DataTypes) => {
|
|
2
|
+
const Departments = sequelize.define('Departments', {
|
|
3
|
+
EnterpriseId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'Enterprises',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
internalId: {
|
|
14
|
+
allowNull: false,
|
|
15
|
+
type: DataTypes.STRING(50),
|
|
16
|
+
validate: {
|
|
17
|
+
notEmpty: true,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
name: {
|
|
21
|
+
allowNull: false,
|
|
22
|
+
type: DataTypes.STRING(50),
|
|
23
|
+
validate: {
|
|
24
|
+
notEmpty: true,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
Departments.associate = models => {
|
|
30
|
+
Departments.belongsTo(models.Enterprises)
|
|
31
|
+
Departments.hasMany(models.Lines)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return Departments
|
|
35
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
exports.EnterprisesModel = (sequelize, DataTypes) => {
|
|
2
|
+
const Enterprises = sequelize.define('Enterprises', {
|
|
3
|
+
cnpj: {
|
|
4
|
+
type: DataTypes.STRING(18),
|
|
5
|
+
allowNull: false,
|
|
6
|
+
unique: true,
|
|
7
|
+
validate: {
|
|
8
|
+
notEmpty: true,
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
name: {
|
|
12
|
+
allowNull: false,
|
|
13
|
+
type: DataTypes.STRING(50),
|
|
14
|
+
validate: {
|
|
15
|
+
notEmpty: true,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
Enterprises.associate = models => {
|
|
21
|
+
Enterprises.hasMany(models.Departments)
|
|
22
|
+
Enterprises.hasMany(models.SubDepartments)
|
|
23
|
+
Enterprises.hasMany(models.Branches)
|
|
24
|
+
Enterprises.hasMany(models.SystemUsers)
|
|
25
|
+
Enterprises.hasMany(models.Files)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return Enterprises
|
|
29
|
+
}
|
package/src/entity.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
exports.EntityModel = (sequelize, types) => {
|
|
2
|
+
const Entity = sequelize.define('Entity', {
|
|
3
|
+
SkillId: {
|
|
4
|
+
type: types.UUID,
|
|
5
|
+
references: {
|
|
6
|
+
model: 'Skill',
|
|
7
|
+
key: 'id',
|
|
8
|
+
},
|
|
9
|
+
referencesKey: 'id',
|
|
10
|
+
foreignKeyConstraint: true,
|
|
11
|
+
allowNull: false,
|
|
12
|
+
validate: {
|
|
13
|
+
notEmpty: true,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
name: {
|
|
17
|
+
type: types.STRING,
|
|
18
|
+
allowNull: false,
|
|
19
|
+
validate: {
|
|
20
|
+
notEmpty: true,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
values: {
|
|
24
|
+
type: types.STRING,
|
|
25
|
+
},
|
|
26
|
+
})
|
|
27
|
+
Entity.associate = models => {
|
|
28
|
+
Entity.belongsTo(models.Skill)
|
|
29
|
+
Entity.hasMany(models.Synonyms)
|
|
30
|
+
Entity.hasMany(models.EntityValues)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return Entity
|
|
34
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
const ENTITY_VALUES_TYPES = {
|
|
2
|
+
SYNONYM: 'synonyms',
|
|
3
|
+
PATTERN: 'pattern',
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
const ENTITY_VALUES_TYPE = [
|
|
7
|
+
ENTITY_VALUES_TYPES.SYNONYM,
|
|
8
|
+
ENTITY_VALUES_TYPES.PATTERN,
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
const EntityValuesModel = (sequelize, types) => {
|
|
12
|
+
const EntityValues = sequelize.define('EntityValues', {
|
|
13
|
+
EntityId: {
|
|
14
|
+
type: types.UUID,
|
|
15
|
+
references: {
|
|
16
|
+
model: 'Entity',
|
|
17
|
+
key: 'id',
|
|
18
|
+
},
|
|
19
|
+
referencesKey: 'id',
|
|
20
|
+
foreignKeyConstraint: true,
|
|
21
|
+
allowNull: false,
|
|
22
|
+
validate: {
|
|
23
|
+
notEmpty: true,
|
|
24
|
+
},
|
|
25
|
+
onDelete: 'RESTRICT',
|
|
26
|
+
onUpdate: 'CASCADE',
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
name: {
|
|
30
|
+
type: types.STRING,
|
|
31
|
+
allowNull: false,
|
|
32
|
+
validate: {
|
|
33
|
+
notEmpty: true,
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
synonyms: {
|
|
38
|
+
type: types.STRING,
|
|
39
|
+
allowNull: false,
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
type: {
|
|
43
|
+
type: types.ENUM({
|
|
44
|
+
values: ENTITY_VALUES_TYPE,
|
|
45
|
+
}),
|
|
46
|
+
allowNull: false,
|
|
47
|
+
defaultValue: ENTITY_VALUES_TYPES.SYNONYM,
|
|
48
|
+
},
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
EntityValues.associate = models => {
|
|
52
|
+
EntityValues.belongsTo(models.Entity)
|
|
53
|
+
EntityValues.hasMany(models.Synonyms)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return EntityValues
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
module.exports = {
|
|
60
|
+
EntityValuesModel,
|
|
61
|
+
ENTITY_VALUES_TYPE,
|
|
62
|
+
ENTITY_VALUES_TYPES,
|
|
63
|
+
}
|
package/src/files.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
exports.FilesModel = (sequelize, DataTypes) => {
|
|
2
|
+
const Files = sequelize.define('Files', {
|
|
3
|
+
EnterpriseId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'Enterprises',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
base64: {
|
|
14
|
+
type: DataTypes.TEXT,
|
|
15
|
+
allowNull: false,
|
|
16
|
+
validate: {
|
|
17
|
+
notEmpty: true,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
type: {
|
|
21
|
+
type: DataTypes.TEXT,
|
|
22
|
+
allowNull: false,
|
|
23
|
+
validate: {
|
|
24
|
+
notEmpty: true,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
Files.associate = models => {
|
|
30
|
+
Files.belongsTo(models.Enterprises)
|
|
31
|
+
Files.hasOne(models.Channels)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return Files
|
|
35
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
exports.IbmProviderModel = (sequelize, types) => {
|
|
2
|
+
const IbmProvider = sequelize.define('IbmProvider', {
|
|
3
|
+
url: {
|
|
4
|
+
type: types.STRING,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
validate: {
|
|
7
|
+
notEmpty: true,
|
|
8
|
+
},
|
|
9
|
+
},
|
|
10
|
+
|
|
11
|
+
token: {
|
|
12
|
+
type: types.STRING,
|
|
13
|
+
allowNull: false,
|
|
14
|
+
validate: {
|
|
15
|
+
notEmpty: true,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
active: {
|
|
20
|
+
type: types.BOOLEAN,
|
|
21
|
+
defaultValue: true,
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
IntelligenceId: {
|
|
25
|
+
type: types.UUID,
|
|
26
|
+
allowNull: false,
|
|
27
|
+
validate: {
|
|
28
|
+
notEmpty: true,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
UserId: {
|
|
33
|
+
type: types.UUID,
|
|
34
|
+
},
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
IbmProvider.associate = models => {
|
|
38
|
+
IbmProvider.belongsTo(models.Intelligence)
|
|
39
|
+
IbmProvider.hasMany(models.Skill)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return IbmProvider
|
|
43
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const PROVIDER_TYPES = {
|
|
2
|
+
AWS: 'aws',
|
|
3
|
+
IBM: 'ibm',
|
|
4
|
+
ITLEAN: 'itlean',
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const PROVIDER_TYPE = [
|
|
8
|
+
PROVIDER_TYPES.AWS,
|
|
9
|
+
PROVIDER_TYPES.IBM,
|
|
10
|
+
PROVIDER_TYPES.ITLEAN,
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
const IntelligenceModel = (sequelize, types) => {
|
|
14
|
+
const Intelligence = sequelize.define('Intelligence', {
|
|
15
|
+
name: {
|
|
16
|
+
type: types.STRING,
|
|
17
|
+
allowNull: false,
|
|
18
|
+
validate: {
|
|
19
|
+
notEmpty: true,
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
providerType: {
|
|
23
|
+
type: types.ENUM({
|
|
24
|
+
values: PROVIDER_TYPE,
|
|
25
|
+
}),
|
|
26
|
+
allowNull: false,
|
|
27
|
+
validate: {
|
|
28
|
+
notEmpty: true,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
Intelligence.associate = models => {
|
|
34
|
+
Intelligence.hasMany(models.Skill)
|
|
35
|
+
Intelligence.hasMany(models.IbmProvider)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return Intelligence
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
module.exports = {
|
|
42
|
+
IntelligenceModel,
|
|
43
|
+
PROVIDER_TYPE,
|
|
44
|
+
PROVIDER_TYPES,
|
|
45
|
+
}
|
package/src/intention.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
exports.IntentionModel = (sequelize, types) => {
|
|
2
|
+
const Intention = sequelize.define('Intention', {
|
|
3
|
+
SkillId: {
|
|
4
|
+
type: types.UUID,
|
|
5
|
+
references: {
|
|
6
|
+
model: 'Skill',
|
|
7
|
+
key: 'id',
|
|
8
|
+
},
|
|
9
|
+
referencesKey: 'id',
|
|
10
|
+
foreignKeyConstraint: true,
|
|
11
|
+
allowNull: false,
|
|
12
|
+
validate: {
|
|
13
|
+
notEmpty: true,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
name: {
|
|
18
|
+
type: types.STRING,
|
|
19
|
+
allowNull: false,
|
|
20
|
+
validate: {
|
|
21
|
+
notEmpty: true,
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
description: {
|
|
26
|
+
type: types.STRING,
|
|
27
|
+
},
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
Intention.associate = models => {
|
|
31
|
+
Intention.belongsTo(models.Skill)
|
|
32
|
+
Intention.hasMany(models.IntentionValue)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return Intention
|
|
36
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
exports.IntentionValueModel = (sequelize, types) => {
|
|
2
|
+
const IntentionValue = sequelize.define('IntentionValue', {
|
|
3
|
+
IntentionId: {
|
|
4
|
+
type: types.UUID,
|
|
5
|
+
references: {
|
|
6
|
+
model: 'Intention',
|
|
7
|
+
key: 'id',
|
|
8
|
+
},
|
|
9
|
+
referencesKey: 'id',
|
|
10
|
+
foreignKeyConstraint: true,
|
|
11
|
+
allowNull: false,
|
|
12
|
+
validate: {
|
|
13
|
+
notEmpty: true,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
name: {
|
|
18
|
+
type: types.STRING,
|
|
19
|
+
allowNull: false,
|
|
20
|
+
validate: {
|
|
21
|
+
notEmpty: true,
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
IntentionValue.associate = models => {
|
|
27
|
+
IntentionValue.belongsTo(models.Intention)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return IntentionValue
|
|
31
|
+
}
|
package/src/lines.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
exports.LinesModel = (sequelize, DataTypes) => {
|
|
2
|
+
const Lines = sequelize.define('Lines', {
|
|
3
|
+
BranchId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'Branches',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
DepartmentId: {
|
|
14
|
+
type: DataTypes.UUID,
|
|
15
|
+
allowNull: false,
|
|
16
|
+
references: {
|
|
17
|
+
model: 'Departments',
|
|
18
|
+
key: 'id',
|
|
19
|
+
},
|
|
20
|
+
onDelete: 'RESTRICT',
|
|
21
|
+
onUpdate: 'CASCADE',
|
|
22
|
+
},
|
|
23
|
+
SubDepartmentId: {
|
|
24
|
+
type: DataTypes.UUID,
|
|
25
|
+
allowNull: false,
|
|
26
|
+
references: {
|
|
27
|
+
model: 'SubDepartments',
|
|
28
|
+
key: 'id',
|
|
29
|
+
},
|
|
30
|
+
onDelete: 'RESTRICT',
|
|
31
|
+
onUpdate: 'CASCADE',
|
|
32
|
+
},
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
Lines.associate = models => {
|
|
36
|
+
Lines.belongsTo(models.Branches)
|
|
37
|
+
Lines.belongsTo(models.Departments)
|
|
38
|
+
Lines.belongsTo(models.SubDepartments)
|
|
39
|
+
Lines.belongsToMany(models.SystemUsers, {
|
|
40
|
+
through: models.SystemUsers_Lines,
|
|
41
|
+
})
|
|
42
|
+
Lines.hasOne(models.LineConfigurations)
|
|
43
|
+
Lines.hasMany(models.Attendances)
|
|
44
|
+
Lines.hasMany(models.QuickMessages)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return Lines
|
|
48
|
+
}
|
package/src/profile.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
exports.ProfilesModel = (sequelize, DataTypes) => {
|
|
2
|
+
const Profiles = sequelize.define('Profiles', {
|
|
3
|
+
name: {
|
|
4
|
+
allowNull: false,
|
|
5
|
+
unique: true,
|
|
6
|
+
type: DataTypes.STRING(50),
|
|
7
|
+
validate: {
|
|
8
|
+
notEmpty: true,
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
Profiles.associate = models => {
|
|
14
|
+
Profiles.belongsToMany(models.Permissions, {
|
|
15
|
+
through: models.Profiles_Permissions,
|
|
16
|
+
})
|
|
17
|
+
Profiles.belongsToMany(models.SystemUsers, {
|
|
18
|
+
through: models.SystemUsers_Profiles,
|
|
19
|
+
})
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return Profiles
|
|
23
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
exports.Profiles_PermissionsModel = (sequelize, DataTypes) => {
|
|
2
|
+
const Profiles_Permissions = sequelize.define('Profiles_Permissions', {
|
|
3
|
+
ProfileId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'Profiles',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
PermissionId: {
|
|
14
|
+
type: DataTypes.UUID,
|
|
15
|
+
allowNull: false,
|
|
16
|
+
references: {
|
|
17
|
+
model: 'Permissions',
|
|
18
|
+
key: 'id',
|
|
19
|
+
},
|
|
20
|
+
onDelete: 'RESTRICT',
|
|
21
|
+
onUpdate: 'CASCADE',
|
|
22
|
+
},
|
|
23
|
+
})
|
|
24
|
+
return Profiles_Permissions
|
|
25
|
+
}
|
package/src/sessions.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
exports.SessionsModel = (sequelize, DataTypes) => {
|
|
2
|
+
const Sessions = sequelize.define('Sessions', {
|
|
3
|
+
ChannelId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'Channels',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
context: {
|
|
14
|
+
type: DataTypes.JSON,
|
|
15
|
+
allowNull: true,
|
|
16
|
+
validate: {
|
|
17
|
+
notEmpty: false,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
tranship: {
|
|
21
|
+
type: DataTypes.BOOLEAN,
|
|
22
|
+
defaultValue: false,
|
|
23
|
+
},
|
|
24
|
+
status: {
|
|
25
|
+
type: DataTypes.ENUM(['open', 'closed', 'expired']),
|
|
26
|
+
allowNull: false,
|
|
27
|
+
validate: {
|
|
28
|
+
notEmpty: false,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
endOfSession: {
|
|
32
|
+
type: DataTypes.DATE,
|
|
33
|
+
allowNull: true,
|
|
34
|
+
},
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
Sessions.associate = models => {
|
|
38
|
+
Sessions.belongsTo(models.Channels)
|
|
39
|
+
Sessions.hasOne(models.Attendances)
|
|
40
|
+
Sessions.hasOne(models.SocketClients)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return Sessions
|
|
44
|
+
}
|
package/src/skill.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
const SKILL_LANG = ['pt-br']
|
|
2
|
+
|
|
3
|
+
const STATUS_TYPES = {
|
|
4
|
+
NOT_ACTION: 'without_action',
|
|
5
|
+
WAIT: 'waiting',
|
|
6
|
+
SUCCESS: 'success',
|
|
7
|
+
FAIL: 'failed',
|
|
8
|
+
CANCEL: 'cancel',
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const STATUS = [
|
|
12
|
+
STATUS_TYPES.NOT_ACTION,
|
|
13
|
+
STATUS_TYPES.WAIT,
|
|
14
|
+
STATUS_TYPES.SUCCESS,
|
|
15
|
+
STATUS_TYPES.FAIL,
|
|
16
|
+
STATUS_TYPES.CANCEL,
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
const SkillModel = (sequelize, types) => {
|
|
20
|
+
const Skill = sequelize.define('Skill', {
|
|
21
|
+
IntelligenceId: {
|
|
22
|
+
type: types.UUID,
|
|
23
|
+
allowNull: false,
|
|
24
|
+
references: {
|
|
25
|
+
model: 'Intelligence',
|
|
26
|
+
key: 'id',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
AwsProviderId: {
|
|
31
|
+
type: types.UUID,
|
|
32
|
+
},
|
|
33
|
+
IbmProviderId: {
|
|
34
|
+
type: types.UUID,
|
|
35
|
+
allowNull: true,
|
|
36
|
+
references: {
|
|
37
|
+
model: 'IbmProvider',
|
|
38
|
+
key: 'id',
|
|
39
|
+
},
|
|
40
|
+
onDelete: 'RESTRICT',
|
|
41
|
+
onUpdate: 'CASCADE',
|
|
42
|
+
},
|
|
43
|
+
ItleanProviderId: {
|
|
44
|
+
type: types.UUID,
|
|
45
|
+
allowNull: true,
|
|
46
|
+
references: {
|
|
47
|
+
model: 'ItleanProvider',
|
|
48
|
+
key: 'id',
|
|
49
|
+
},
|
|
50
|
+
onDelete: 'RESTRICT',
|
|
51
|
+
onUpdate: 'CASCADE',
|
|
52
|
+
},
|
|
53
|
+
name: {
|
|
54
|
+
type: types.STRING,
|
|
55
|
+
allowNull: false,
|
|
56
|
+
validate: {
|
|
57
|
+
notEmpty: true,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
description: {
|
|
61
|
+
type: types.STRING,
|
|
62
|
+
defaultValue: '',
|
|
63
|
+
},
|
|
64
|
+
lang: {
|
|
65
|
+
type: types.ENUM({
|
|
66
|
+
values: SKILL_LANG,
|
|
67
|
+
}),
|
|
68
|
+
allowNull: false,
|
|
69
|
+
validate: {
|
|
70
|
+
notEmpty: true,
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
publishProcessStatus: {
|
|
74
|
+
type: types.ENUM({
|
|
75
|
+
values: STATUS,
|
|
76
|
+
}),
|
|
77
|
+
defaultValue: STATUS_TYPES.NOT_ACTION,
|
|
78
|
+
},
|
|
79
|
+
externalIbmId: {
|
|
80
|
+
type: types.STRING,
|
|
81
|
+
},
|
|
82
|
+
publishedOnProvider: {
|
|
83
|
+
type: types.BOOLEAN,
|
|
84
|
+
defaultValue: false,
|
|
85
|
+
},
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
Skill.associate = models => {
|
|
89
|
+
Skill.belongsTo(models.Intelligence)
|
|
90
|
+
Skill.hasMany(models.Intention)
|
|
91
|
+
Skill.hasMany(models.Entity)
|
|
92
|
+
Skill.hasMany(models.Channels)
|
|
93
|
+
Skill.hasMany(models.Skill_ApiResources)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return Skill
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
module.exports = {
|
|
100
|
+
SkillModel,
|
|
101
|
+
SKILL_LANG,
|
|
102
|
+
STATUS,
|
|
103
|
+
STATUS_TYPES,
|
|
104
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
exports.Skill_ApiResourcesModel = (sequelize, Sequelize) => {
|
|
2
|
+
const Skill_ApiResources = sequelize.define('Skill_ApiResources', {
|
|
3
|
+
SkillId: {
|
|
4
|
+
type: Sequelize.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'Skills',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
ApiResourceId: {
|
|
14
|
+
type: Sequelize.UUID,
|
|
15
|
+
allowNull: false,
|
|
16
|
+
references: {
|
|
17
|
+
model: 'ApiResources',
|
|
18
|
+
key: 'id',
|
|
19
|
+
},
|
|
20
|
+
onDelete: 'RESTRICT',
|
|
21
|
+
onUpdate: 'CASCADE',
|
|
22
|
+
},
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
Skill_ApiResources.associate = models => {
|
|
26
|
+
Skill_ApiResources.belongsTo(models.Skill)
|
|
27
|
+
// Skill_ApiResources.belongsTo(models.ApiResources)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return Skill_ApiResources
|
|
31
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
exports.SocketClientsModel = (sequelize, DataTypes) => {
|
|
2
|
+
const SocketClients = sequelize.define('SocketClients', {
|
|
3
|
+
SessionId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: true,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'Sessions',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
SystemUserId: {
|
|
14
|
+
type: DataTypes.UUID,
|
|
15
|
+
allowNull: true,
|
|
16
|
+
references: {
|
|
17
|
+
model: 'SystemUsers',
|
|
18
|
+
key: 'id',
|
|
19
|
+
},
|
|
20
|
+
onDelete: 'RESTRICT',
|
|
21
|
+
onUpdate: 'CASCADE',
|
|
22
|
+
},
|
|
23
|
+
socketId: {
|
|
24
|
+
type: DataTypes.STRING,
|
|
25
|
+
allowNull: false,
|
|
26
|
+
validate: {
|
|
27
|
+
notEmpty: true,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
protocol: {
|
|
31
|
+
type: DataTypes.STRING,
|
|
32
|
+
allowNull: false,
|
|
33
|
+
validate: {
|
|
34
|
+
notEmpty: true,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
SocketClients.associate = models => {
|
|
40
|
+
SocketClients.belongsTo(models.Sessions)
|
|
41
|
+
SocketClients.belongsTo(models.SystemUsers)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return SocketClients
|
|
45
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
exports.SubDepartmentsModel = (sequelize, DataTypes) => {
|
|
2
|
+
const SubDepartments = sequelize.define('SubDepartments', {
|
|
3
|
+
EnterpriseId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'Enterprises',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
internalId: {
|
|
14
|
+
allowNull: false,
|
|
15
|
+
type: DataTypes.STRING(50),
|
|
16
|
+
validate: {
|
|
17
|
+
notEmpty: true,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
name: {
|
|
21
|
+
allowNull: false,
|
|
22
|
+
type: DataTypes.STRING(50),
|
|
23
|
+
validate: {
|
|
24
|
+
notEmpty: true,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
SubDepartments.associate = models => {
|
|
30
|
+
SubDepartments.belongsTo(models.Enterprises)
|
|
31
|
+
SubDepartments.hasMany(models.Lines)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return SubDepartments
|
|
35
|
+
}
|
package/src/synonyms.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const SYNONYMS_TYPES = {
|
|
2
|
+
SYNONYM: 'synonyms',
|
|
3
|
+
PATTERN: 'pattern',
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
const SYNONYMS_TYPE = [SYNONYMS_TYPES.SYNONYM, SYNONYMS_TYPES.PATTERN]
|
|
7
|
+
|
|
8
|
+
const SynonymsModel = (sequelize, types) => {
|
|
9
|
+
const Synonyms = sequelize.define('Synonyms', {
|
|
10
|
+
EntityValueId: {
|
|
11
|
+
type: types.UUID,
|
|
12
|
+
references: {
|
|
13
|
+
model: 'EntityValues',
|
|
14
|
+
key: 'id',
|
|
15
|
+
},
|
|
16
|
+
referencesKey: 'id',
|
|
17
|
+
foreignKeyConstraint: true,
|
|
18
|
+
allowNull: false,
|
|
19
|
+
validate: {
|
|
20
|
+
notEmpty: true,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
EntityId: {
|
|
25
|
+
type: types.UUID,
|
|
26
|
+
references: {
|
|
27
|
+
model: 'Entities',
|
|
28
|
+
key: 'id',
|
|
29
|
+
},
|
|
30
|
+
referencesKey: 'id',
|
|
31
|
+
foreignKeyConstraint: true,
|
|
32
|
+
allowNull: false,
|
|
33
|
+
validate: {
|
|
34
|
+
notEmpty: true,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
name: {
|
|
39
|
+
type: types.STRING,
|
|
40
|
+
allowNull: false,
|
|
41
|
+
validate: {
|
|
42
|
+
notEmpty: true,
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
type: {
|
|
47
|
+
type: types.ENUM({
|
|
48
|
+
values: SYNONYMS_TYPE,
|
|
49
|
+
}),
|
|
50
|
+
allowNull: false,
|
|
51
|
+
defaultValue: SYNONYMS_TYPES.SYNONYM,
|
|
52
|
+
},
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
Synonyms.associate = models => {
|
|
56
|
+
Synonyms.belongsTo(models.EntityValues)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return Synonyms
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
module.exports = {
|
|
63
|
+
SynonymsModel,
|
|
64
|
+
SYNONYMS_TYPE,
|
|
65
|
+
SYNONYMS_TYPES,
|
|
66
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
exports.SystemUsersModel = (sequelize, DataTypes) => {
|
|
2
|
+
const SystemUsers = sequelize.define('SystemUsers', {
|
|
3
|
+
name: {
|
|
4
|
+
allowNull: false,
|
|
5
|
+
type: DataTypes.STRING(50),
|
|
6
|
+
validate: {
|
|
7
|
+
notEmpty: true,
|
|
8
|
+
},
|
|
9
|
+
},
|
|
10
|
+
email: {
|
|
11
|
+
allowNull: false,
|
|
12
|
+
type: DataTypes.TEXT,
|
|
13
|
+
unique: true,
|
|
14
|
+
validate: {
|
|
15
|
+
notEmpty: true,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
password: {
|
|
19
|
+
type: DataTypes.TEXT,
|
|
20
|
+
},
|
|
21
|
+
EnterpriseId: {
|
|
22
|
+
type: DataTypes.UUID,
|
|
23
|
+
allowNull: false,
|
|
24
|
+
references: {
|
|
25
|
+
model: 'Enterprises',
|
|
26
|
+
key: 'id',
|
|
27
|
+
},
|
|
28
|
+
onDelete: 'RESTRICT',
|
|
29
|
+
onUpdate: 'CASCADE',
|
|
30
|
+
},
|
|
31
|
+
maxSimultaneousAttendances: {
|
|
32
|
+
type: DataTypes.INTEGER,
|
|
33
|
+
allowNull: true,
|
|
34
|
+
},
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
SystemUsers.associate = models => {
|
|
38
|
+
SystemUsers.belongsToMany(models.Profiles, {
|
|
39
|
+
through: models.SystemUsers_Profiles,
|
|
40
|
+
})
|
|
41
|
+
SystemUsers.belongsTo(models.Enterprises)
|
|
42
|
+
SystemUsers.belongsToMany(models.Lines, {
|
|
43
|
+
through: models.SystemUsers_Lines,
|
|
44
|
+
})
|
|
45
|
+
SystemUsers.hasMany(models.Attendances)
|
|
46
|
+
SystemUsers.hasMany(models.SocketClients)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return SystemUsers
|
|
50
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
exports.SystemUsers_LinesModel = (sequelize, DataTypes) => {
|
|
2
|
+
const SystemUsers_Lines = sequelize.define('SystemUsers_Lines', {
|
|
3
|
+
SystemUserId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'SystemUsers',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
LineId: {
|
|
14
|
+
type: DataTypes.UUID,
|
|
15
|
+
allowNull: false,
|
|
16
|
+
references: {
|
|
17
|
+
model: 'Lines',
|
|
18
|
+
key: 'id',
|
|
19
|
+
},
|
|
20
|
+
onDelete: 'RESTRICT',
|
|
21
|
+
onUpdate: 'CASCADE',
|
|
22
|
+
},
|
|
23
|
+
})
|
|
24
|
+
return SystemUsers_Lines
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
exports.SystemUsers_ProfilesModel = (sequelize, DataTypes) => {
|
|
2
|
+
const SystemUsers_Profiles = sequelize.define('SystemUsers_Profiles', {
|
|
3
|
+
SystemUserId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'SystemUsers',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
ProfileId: {
|
|
14
|
+
type: DataTypes.UUID,
|
|
15
|
+
allowNull: false,
|
|
16
|
+
references: {
|
|
17
|
+
model: 'Profiles',
|
|
18
|
+
key: 'id',
|
|
19
|
+
},
|
|
20
|
+
onDelete: 'RESTRICT',
|
|
21
|
+
onUpdate: 'CASCADE',
|
|
22
|
+
},
|
|
23
|
+
})
|
|
24
|
+
return SystemUsers_Profiles
|
|
25
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
exports.TranshipConversationsModel = (sequelize, DataTypes) => {
|
|
2
|
+
const TranshipConversations = sequelize.define('TranshipConversations', {
|
|
3
|
+
AttendanceId: {
|
|
4
|
+
type: DataTypes.UUID,
|
|
5
|
+
allowNull: false,
|
|
6
|
+
references: {
|
|
7
|
+
model: 'Attendances',
|
|
8
|
+
key: 'id',
|
|
9
|
+
},
|
|
10
|
+
onDelete: 'RESTRICT',
|
|
11
|
+
onUpdate: 'CASCADE',
|
|
12
|
+
},
|
|
13
|
+
action: {
|
|
14
|
+
type: DataTypes.ENUM(['tranship', 'client']),
|
|
15
|
+
allowNull: false,
|
|
16
|
+
validate: {
|
|
17
|
+
notEmpty: true,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
message: {
|
|
21
|
+
type: DataTypes.TEXT,
|
|
22
|
+
allowNull: false,
|
|
23
|
+
validate: {
|
|
24
|
+
notEmpty: true,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
TranshipConversations.associate = models => {
|
|
30
|
+
TranshipConversations.belongsTo(models.Attendances)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return TranshipConversations
|
|
34
|
+
}
|