label-print/sequelize/label.model.mjs
2025-05-17 16:23:48 +02:00

102 lines
No EOL
1.9 KiB
JavaScript

import {
DataTypes
} from 'sequelize';
import {
DBLogger,
LabelDB
} from './db_conn.mjs'
export const Label = LabelDB.define('label', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
name: {
type: DataTypes.STRING,
allowNull: false
},
width: {
type: DataTypes.INTEGER,
allowNull: false
},
height: {
type: DataTypes.INTEGER,
allowNull: false
}
}, {
tableName: 'labels',
timestamps: false
});
export const Element = LabelDB.define('element', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
type: {
type: DataTypes.STRING,
allowNull: false
},
config: {
type: DataTypes.JSON,
allowNull: false
},
comment: {
type: DataTypes.TEXT,
allowNull: false
}
}, {
tableName: 'label_elements',
timestamps: false
});
export const Variable = LabelDB.define('variable', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
name: {
type: DataTypes.STRING,
allowNull: false
},
regex: {
type: DataTypes.TEXT,
allowNull: false
},
comment: {
type: DataTypes.TEXT,
allowNull: false
}
}, {
tableName: 'label_variables',
timestamps: false
});
Element.belongsTo(Label);
Label.hasMany(Element, {
onDelete: 'CASCADE',
foreignKey: {
allowNull: false
}
});
Variable.belongsTo(Label);
Label.hasMany(Variable, {
onDelete: 'CASCADE',
foreignKey: {
allowNull: false
}
});
console.log(Label.associations);
for (let assoc of Object.keys(Label.associations)) {
for (let accessor of Object.keys(Label.associations[assoc].accessors)) {
console.log(Label.name + '.' + Label.associations[assoc].accessors[accessor] + '()');
}
}