Skip to content

Commit b41b7dc

Browse files
authored
Create model and associations for directory monitorings (#741)
* Create model and associations for directory monitorings * add additional fields required * remove duplicate
1 parent 3814352 commit b41b7dc

File tree

3 files changed

+239
-27
lines changed

3 files changed

+239
-27
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
"use strict";
2+
module.exports = {
3+
async up(queryInterface, Sequelize) {
4+
await queryInterface.createTable("directorymonitoring", {
5+
id: {
6+
allowNull: false,
7+
primaryKey: true,
8+
type: Sequelize.UUID,
9+
defaultValue: Sequelize.UUIDV4,
10+
},
11+
application_id: {
12+
type: Sequelize.UUID,
13+
references: {
14+
model: "application",
15+
key: "id",
16+
},
17+
onUpdate: "CASCADE",
18+
onDelete: "CASCADE",
19+
},
20+
cluster_id: {
21+
type: Sequelize.UUID,
22+
references: {
23+
model: "cluster",
24+
key: "id",
25+
},
26+
onUpdate: "CASCADE",
27+
onDelete: "CASCADE",
28+
},
29+
name: {
30+
allowNull: false,
31+
type: Sequelize.DataTypes.STRING,
32+
},
33+
cron: {
34+
allowNull: false,
35+
type: Sequelize.DataTypes.STRING,
36+
},
37+
type: {
38+
allowNull: false,
39+
type: Sequelize.DataTypes.STRING,
40+
defaultValue: false,
41+
},
42+
active: {
43+
allowNull: false,
44+
type: Sequelize.DataTypes.BOOLEAN,
45+
defaultValue: false,
46+
},
47+
directory: {
48+
allowNull: false,
49+
type: Sequelize.DataTypes.STRING,
50+
defaultValue: 0,
51+
},
52+
metaData: {
53+
type: Sequelize.JSON,
54+
allowNull: true,
55+
},
56+
approved: {
57+
allowNull: false,
58+
type: Sequelize.DataTypes.BOOLEAN,
59+
defaultValue: false,
60+
},
61+
approvalNote: {
62+
allowNull: true,
63+
type: Sequelize.DataTypes.STRING,
64+
},
65+
approvedBy: {
66+
allowNull: true,
67+
type: Sequelize.DataTypes.STRING,
68+
},
69+
approvedAt: {
70+
allowNull: true,
71+
type: Sequelize.DataTypes.DATE,
72+
},
73+
createdBy: {
74+
allowNull: false,
75+
type: Sequelize.DataTypes.STRING,
76+
},
77+
updatedBy: {
78+
allowNull: false,
79+
type: Sequelize.DataTypes.STRING,
80+
},
81+
updatedAt: {
82+
allowNull: false,
83+
type: Sequelize.DataTypes.DATE,
84+
},
85+
createdAt: {
86+
allowNull: false,
87+
type: Sequelize.DATE,
88+
},
89+
updatedAt: {
90+
allowNull: false,
91+
type: Sequelize.DATE,
92+
},
93+
deletedAt: {
94+
allowNull: true,
95+
type: Sequelize.DATE,
96+
},
97+
});
98+
},
99+
async down(queryInterface, Sequelize) {
100+
await queryInterface.dropTable("directorymonitoring");
101+
},
102+
};

Diff for: server/models/cluster.js

+46-27
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,51 @@
1-
'use strict';
1+
"use strict";
22
module.exports = (sequelize, DataTypes) => {
3-
const cluster = sequelize.define('cluster', {
4-
id: {
5-
primaryKey: true,
6-
type: DataTypes.UUID,
7-
defaultValue: DataTypes.UUIDV4,
8-
allowNull: false,
9-
autoIncrement: false
3+
const cluster = sequelize.define(
4+
"cluster",
5+
{
6+
id: {
7+
primaryKey: true,
8+
type: DataTypes.UUID,
9+
defaultValue: DataTypes.UUIDV4,
10+
allowNull: false,
11+
autoIncrement: false,
12+
},
13+
name: DataTypes.STRING,
14+
thor_host: DataTypes.STRING,
15+
thor_port: DataTypes.STRING,
16+
roxie_host: DataTypes.STRING,
17+
roxie_port: DataTypes.STRING,
18+
username: DataTypes.STRING,
19+
hash: DataTypes.STRING,
20+
timezone_offset: DataTypes.INTEGER,
21+
metaData: { type: DataTypes.JSON, defaultValue: {} },
1022
},
11-
name: DataTypes.STRING,
12-
thor_host: DataTypes.STRING,
13-
thor_port: DataTypes.STRING,
14-
roxie_host: DataTypes.STRING,
15-
roxie_port: DataTypes.STRING,
16-
username: DataTypes.STRING,
17-
hash: DataTypes.STRING,
18-
timezone_offset: DataTypes.INTEGER,
19-
metaData: {type: DataTypes.JSON, defaultValue : {}},
20-
}, {paranoid: true, freezeTableName: true});
21-
cluster.associate = function(models) {
23+
{ paranoid: true, freezeTableName: true }
24+
);
25+
cluster.associate = function (models) {
2226
// associations can be defined here
23-
cluster.hasMany(models.dataflow, {foreignKey: 'clusterId' });
24-
cluster.hasMany(models.job,{ foreignKey:'cluster_id', });
25-
cluster.hasMany(models.job_execution, {foreignKey: 'clusterId' });
26-
cluster.hasMany(models.dataflow_cluster_credentials,{ foreignKey:'cluster_id', });
27-
cluster.hasMany(models.visualizations, {foreignKey: 'clusterId', onDelete: 'CASCADE'});
28-
cluster.hasMany(models.fileTemplate, {foreignKey: 'cluster_id', onDelete: 'CASCADE'});
29-
cluster.hasMany(models.fileMonitoring, {foreignKey: 'cluster_id', onDelete: 'CASCADE'});
27+
cluster.hasMany(models.dataflow, { foreignKey: "clusterId" });
28+
cluster.hasMany(models.job, { foreignKey: "cluster_id" });
29+
cluster.hasMany(models.job_execution, { foreignKey: "clusterId" });
30+
cluster.hasMany(models.dataflow_cluster_credentials, {
31+
foreignKey: "cluster_id",
32+
});
33+
cluster.hasMany(models.visualizations, {
34+
foreignKey: "clusterId",
35+
onDelete: "CASCADE",
36+
});
37+
cluster.hasMany(models.fileTemplate, {
38+
foreignKey: "cluster_id",
39+
onDelete: "CASCADE",
40+
});
41+
cluster.hasMany(models.fileMonitoring, {
42+
foreignKey: "cluster_id",
43+
onDelete: "CASCADE",
44+
});
45+
cluster.hasMany(models.directoryMonitoring, {
46+
foreignKey: "cluster_id",
47+
onDelete: "CASCADE",
48+
});
3049
};
3150
return cluster;
32-
};
51+
};

Diff for: server/models/directoryMonitoring.js

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
"use strict";
2+
module.exports = (sequelize, DataTypes) => {
3+
const directoryMonitoring = sequelize.define(
4+
"directoryMonitoring",
5+
{
6+
id: {
7+
primaryKey: true,
8+
type: DataTypes.UUID,
9+
defaultValue: DataTypes.UUIDV4,
10+
allowNull: false,
11+
autoIncrement: false,
12+
},
13+
application_id: {
14+
allowNull: false,
15+
type: DataTypes.UUID,
16+
},
17+
cluster_id: {
18+
allowNull: false,
19+
type: DataTypes.UUID,
20+
},
21+
name: {
22+
allowNull: false,
23+
type: DataTypes.STRING,
24+
unique: true,
25+
},
26+
cron: {
27+
allowNull: true,
28+
type: DataTypes.STRING,
29+
},
30+
type: {
31+
allowNull: false,
32+
type: DataTypes.STRING,
33+
},
34+
active: {
35+
allowNull: false,
36+
type: DataTypes.BOOLEAN,
37+
},
38+
directory: {
39+
allowNull: false,
40+
type: DataTypes.STRING,
41+
},
42+
metaData: {
43+
type: DataTypes.JSON,
44+
allowNull: true,
45+
},
46+
approved: {
47+
allowNull: false,
48+
type: DataTypes.BOOLEAN,
49+
},
50+
approvalNote: {
51+
allowNull: true,
52+
type: DataTypes.STRING,
53+
},
54+
approvedBy: {
55+
allowNull: true,
56+
type: DataTypes.STRING,
57+
},
58+
approvedAt: {
59+
allowNull: true,
60+
type: DataTypes.DATE,
61+
},
62+
createdBy: {
63+
allowNull: false,
64+
type: DataTypes.STRING,
65+
},
66+
updatedBy: {
67+
allowNull: false,
68+
type: DataTypes.STRING,
69+
},
70+
updatedAt: {
71+
allowNull: false,
72+
type: DataTypes.DATE,
73+
},
74+
metaData: {
75+
type: DataTypes.JSON,
76+
allowNull: true,
77+
},
78+
},
79+
{ paranoid: true, freezeTableName: true }
80+
);
81+
directoryMonitoring.associate = function (models) {
82+
// Define association here
83+
directoryMonitoring.belongsTo(models.application, {
84+
foreignKey: "application_id",
85+
});
86+
directoryMonitoring.belongsTo(models.cluster, {
87+
foreignKey: "cluster_id",
88+
});
89+
};
90+
return directoryMonitoring;
91+
};

0 commit comments

Comments
 (0)