114 lines
No EOL
2.2 KiB
JavaScript
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] + '()');
|
|
// }
|
|
// }
|