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

114 lines
No EOL
2.2 KiB
JavaScript

import {
DataTypes
} from 'sequelize';
import {
DBLogger,
LabelDB
} from './db_conn.mjs'
export const Template = LabelDB.define('template', {
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: 'templates',
timestamps: false
});
export const Element = LabelDB.define('element', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
name: {
type: DataTypes.STRING,
allowNull: false
},
type: {
type: DataTypes.STRING,
allowNull: false
},
config: {
type: DataTypes.JSON,
allowNull: false
},
comment: {
type: DataTypes.TEXT,
allowNull: false
}
}, {
tableName: 'template_elements',
timestamps: false
});
export const Variable = LabelDB.define('variable', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
name: {
type: DataTypes.STRING,
allowNull: false
},
label: {
type: DataTypes.STRING,
allowNull: false
},
regex: {
type: DataTypes.TEXT,
allowNull: false
},
example: {
type: DataTypes.STRING,
allowNull: false
},
default: {
type: DataTypes.STRING,
allowNull: false
}
}, {
tableName: 'template_variables',
timestamps: false
});
Element.belongsTo(Template);
Template.hasMany(Element, {
onDelete: 'CASCADE',
foreignKey: {
allowNull: false
}
});
Variable.belongsTo(Template);
Template.hasMany(Variable, {
onDelete: 'CASCADE',
foreignKey: {
allowNull: false
}
});
// console.log(Template.associations);
// for (let assoc of Object.keys(Template.associations)) {
// for (let accessor of Object.keys(Template.associations[assoc].accessors)) {
// console.log(Template.name + '.' + Template.associations[assoc].accessors[accessor] + '()');
// }
// }