@itleanchatbot/shared-models-js-postgres 1.0.8 → 1.0.10

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 CHANGED
@@ -1,31 +1,31 @@
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')
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
29
 
30
30
  module.exports = {
31
31
  attendances,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itleanchatbot/shared-models-js-postgres",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "description": "Shared Models JS Postgres",
5
5
  "main": "index.js",
6
6
  "license": "ISC",
@@ -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
+ }
@@ -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
+ }
@@ -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
+ }
@@ -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
+ }
@@ -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
+ }
@@ -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
+ }
@@ -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
+ }