From 8af87a1ee232f3d3544d234acecba0379399e021 Mon Sep 17 00:00:00 2001 From: xsalonx Date: Wed, 20 Dec 2023 14:28:33 +0100 Subject: [PATCH 1/4] add migration file --- .../20231211080706-create-data-passes.js | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 lib/database/migrations/20231211080706-create-data-passes.js diff --git a/lib/database/migrations/20231211080706-create-data-passes.js b/lib/database/migrations/20231211080706-create-data-passes.js new file mode 100644 index 0000000000..859f870057 --- /dev/null +++ b/lib/database/migrations/20231211080706-create-data-passes.js @@ -0,0 +1,42 @@ +'use strict'; + +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + up: async (queryInterface, Sequelize) => queryInterface.sequelize.transaction(async (transaction) => { + await queryInterface.createTable('data_passes', { + id: { + type: Sequelize.INTEGER, + allowNull: false, + primaryKey: true, + autoIncrement: true, + }, + name: { + type: Sequelize.STRING, + allowNull: false, + }, + description: { + type: Sequelize.TEXT, + }, + outputSize: { + type: Sequelize.REAL, + }, + reconstructedEvents: { + type: Sequelize.INTEGER, + }, + lastRun: { + type: Sequelize.INTEGER, + }, + lhcPeriodId: { + type: Sequelize.INTEGER, + references: { + model: 'lhc_periods', + key: 'id', + }, + }, + }, { transaction }); + }), + + down: async (queryInterface) => queryInterface.sequelize.transaction(async (transaction) => { + await queryInterface.dropTable('data_passes', { transaction }); + }), +}; From 82626065d4ad774ae29cd04526e4c3cbbb081c69 Mon Sep 17 00:00:00 2001 From: xsalonx Date: Wed, 20 Dec 2023 15:30:58 +0100 Subject: [PATCH 2/4] add model, fix outputsize type --- .../20231211080706-create-data-passes.js | 20 ++++++-- lib/database/models/dataPass.js | 51 +++++++++++++++++++ lib/database/models/index.js | 2 + lib/database/models/lhcPeriod.js | 1 + 4 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 lib/database/models/dataPass.js diff --git a/lib/database/migrations/20231211080706-create-data-passes.js b/lib/database/migrations/20231211080706-create-data-passes.js index 859f870057..5e361db529 100644 --- a/lib/database/migrations/20231211080706-create-data-passes.js +++ b/lib/database/migrations/20231211080706-create-data-passes.js @@ -17,22 +17,32 @@ module.exports = { description: { type: Sequelize.TEXT, }, - outputSize: { - type: Sequelize.REAL, + output_size: { + type: Sequelize.BIGINT, }, - reconstructedEvents: { + reconstructed_events: { type: Sequelize.INTEGER, }, - lastRun: { + last_run: { type: Sequelize.INTEGER, }, - lhcPeriodId: { + lhc_period_id: { type: Sequelize.INTEGER, references: { model: 'lhc_periods', key: 'id', }, }, + created_at: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'), + }, + updated_at: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), + }, }, { transaction }); }), diff --git a/lib/database/models/dataPass.js b/lib/database/models/dataPass.js new file mode 100644 index 0000000000..0ac891e47b --- /dev/null +++ b/lib/database/models/dataPass.js @@ -0,0 +1,51 @@ +/** + * @license + * Copyright CERN and copyright holders of ALICE O2. This software is + * distributed under the terms of the GNU General Public License v3 (GPL + * Version 3), copied verbatim in the file "COPYING". + * + * See http://alice-o2.web.cern.ch/license for full licensing information. + * + * In applying this license CERN does not waive the privileges and immunities + * granted to it by virtue of its status as an Intergovernmental Organization + * or submit itself to any jurisdiction. + */ + +const Sequelize = require('sequelize'); + +module.exports = (sequelize) => { + const DataPass = sequelize.define( + 'DataPass', + { + id: { + type: Sequelize.INTEGER, + allowNull: false, + primaryKey: true, + autoIncrement: true, + }, + name: { + type: Sequelize.STRING, + allowNull: false, + }, + description: { + type: Sequelize.TEXT, + }, + outputSize: { + type: Sequelize.BIGINT, + }, + reconstructedEvents: { + type: Sequelize.INTEGER, + }, + lastRun: { + type: Sequelize.INTEGER, + }, + }, + { tableName: 'data_passes' }, + ); + + DataPass.associate = (models) => { + DataPass.belongsTo(models.LhcPeriod, { foreignKey: 'lhcPeriodId', as: 'lhcPeriod' }); + }; + + return DataPass; +}; diff --git a/lib/database/models/index.js b/lib/database/models/index.js index a9ad4d39fe..5fd94432e6 100644 --- a/lib/database/models/index.js +++ b/lib/database/models/index.js @@ -36,6 +36,7 @@ const Tag = require('./tag'); const User = require('./user'); const LhcPeriod = require('./lhcPeriod'); const LhcPeriodStatistics = require('./lhcPeriodsStatistics'); +const DataPass = require('./dataPass.js'); module.exports = (sequelize) => { const models = { @@ -64,6 +65,7 @@ module.exports = (sequelize) => { User: User(sequelize), LhcPeriod: LhcPeriod(sequelize), LhcPeriodStatistics: LhcPeriodStatistics(sequelize), + DataPass: DataPass(sequelize), }; Object.entries(models).forEach(([_key, model]) => { diff --git a/lib/database/models/lhcPeriod.js b/lib/database/models/lhcPeriod.js index 369d90d474..d089670b3a 100644 --- a/lib/database/models/lhcPeriod.js +++ b/lib/database/models/lhcPeriod.js @@ -33,6 +33,7 @@ module.exports = (sequelize) => { LhcPeriod.associate = (models) => { LhcPeriod.hasMany(models.Run, { foreignKey: 'lhcPeriodId', as: 'runs' }); + LhcPeriod.hasOne(models.DataPass); }; return LhcPeriod; From f587436fcc20f4d198b72554b6427de8b190b0db Mon Sep 17 00:00:00 2001 From: xsalonx Date: Wed, 20 Dec 2023 15:50:52 +0100 Subject: [PATCH 3/4] add typedef --- .../models/typedefs/SequelizeDataPass.js | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 lib/database/models/typedefs/SequelizeDataPass.js diff --git a/lib/database/models/typedefs/SequelizeDataPass.js b/lib/database/models/typedefs/SequelizeDataPass.js new file mode 100644 index 0000000000..789576326c --- /dev/null +++ b/lib/database/models/typedefs/SequelizeDataPass.js @@ -0,0 +1,23 @@ +/** + * @license + * Copyright CERN and copyright holders of ALICE O2. This software is + * distributed under the terms of the GNU General Public License v3 (GPL + * Version 3), copied verbatim in the file "COPYING". + * + * See http://alice-o2.web.cern.ch/license for full licensing information. + * + * In applying this license CERN does not waive the privileges and immunities + * granted to it by virtue of its status as an Intergovernmental Organization + * or submit itself to any jurisdiction. + */ + +/** + * @typedef SequelizeDataPass + * + * @property {number} id + * @property {string} name + * @property {string} description + * @property {number} outputSize + * @property {number} reconstructedEvents + * @property {number} lastRun + */ From 2ca6fa11e6a6f3c222e3f789bdd99457f1755b18 Mon Sep 17 00:00:00 2001 From: xsalonx Date: Wed, 20 Dec 2023 16:02:30 +0100 Subject: [PATCH 4/4] rename --- lib/database/migrations/20231211080706-create-data-passes.js | 4 ++-- lib/database/models/dataPass.js | 4 ++-- lib/database/models/typedefs/SequelizeDataPass.js | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/database/migrations/20231211080706-create-data-passes.js b/lib/database/migrations/20231211080706-create-data-passes.js index 5e361db529..e265a34398 100644 --- a/lib/database/migrations/20231211080706-create-data-passes.js +++ b/lib/database/migrations/20231211080706-create-data-passes.js @@ -20,10 +20,10 @@ module.exports = { output_size: { type: Sequelize.BIGINT, }, - reconstructed_events: { + reconstructed_events_count: { type: Sequelize.INTEGER, }, - last_run: { + last_run_number: { type: Sequelize.INTEGER, }, lhc_period_id: { diff --git a/lib/database/models/dataPass.js b/lib/database/models/dataPass.js index 0ac891e47b..b0adff92d8 100644 --- a/lib/database/models/dataPass.js +++ b/lib/database/models/dataPass.js @@ -33,10 +33,10 @@ module.exports = (sequelize) => { outputSize: { type: Sequelize.BIGINT, }, - reconstructedEvents: { + reconstructedEventsCount: { type: Sequelize.INTEGER, }, - lastRun: { + lastRunNumber: { type: Sequelize.INTEGER, }, }, diff --git a/lib/database/models/typedefs/SequelizeDataPass.js b/lib/database/models/typedefs/SequelizeDataPass.js index 789576326c..f2ddff69b1 100644 --- a/lib/database/models/typedefs/SequelizeDataPass.js +++ b/lib/database/models/typedefs/SequelizeDataPass.js @@ -18,6 +18,6 @@ * @property {string} name * @property {string} description * @property {number} outputSize - * @property {number} reconstructedEvents - * @property {number} lastRun + * @property {number} reconstructedEventsCount + * @property {number} lastRunNumber */