initial upload
This commit is contained in:
parent
ac114da487
commit
7c1cfdff51
63 changed files with 6883 additions and 0 deletions
34
sequelize/apps.model.mjs
Normal file
34
sequelize/apps.model.mjs
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
|
||||
import {
|
||||
DataTypes
|
||||
} from 'sequelize';
|
||||
|
||||
import {
|
||||
DBLogger,
|
||||
LabelDB
|
||||
} from './db_conn.mjs'
|
||||
|
||||
import {
|
||||
Permission
|
||||
} from "./perms.model.mjs";
|
||||
|
||||
export const App = LabelDB.define('app', {
|
||||
id: {
|
||||
type: DataTypes.UUID,
|
||||
defaultValue: DataTypes.UUIDV4,
|
||||
primaryKey: true
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
token: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
}
|
||||
}, {
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
App.belongsToMany(Permission, { through: 'app_permissions', timestamps: false, foreignKey: 'app' });
|
||||
Permission.belongsToMany(App, { through: 'app_permissions', timestamps: false, foreignKey: 'permission' });
|
||||
44
sequelize/db_conn.mjs
Normal file
44
sequelize/db_conn.mjs
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
|
||||
import {
|
||||
Sequelize
|
||||
} from 'sequelize';
|
||||
|
||||
import Logger from 'pino';
|
||||
|
||||
export var DBLogger = Logger(Logger.destination('./logs/database.log'))
|
||||
DBLogger.level = 10;
|
||||
|
||||
export var LabelDB = new Sequelize({
|
||||
dialect: 'mysql',
|
||||
host: '10.10.30.10',
|
||||
port: "3306",
|
||||
username: "label_print",
|
||||
password: "mIhAha267oPiVoge1og5F2rub8nERI",
|
||||
database: "aol_label-print",
|
||||
logging: (Message) => DBLogger.debug(Message)
|
||||
});
|
||||
|
||||
|
||||
(async () => {
|
||||
await import('./media.model.mjs');
|
||||
await import('./printer.model.mjs');
|
||||
await import('./template.model.mjs');
|
||||
await import('./queue.model.mjs');
|
||||
await import('./perms.model.mjs');
|
||||
await import('./apps.model.mjs');
|
||||
await import('./job.model.mjs');
|
||||
|
||||
try {
|
||||
await LabelDB.authenticate();
|
||||
DBLogger.info('Connection has been established successfully.');
|
||||
} catch (error) {
|
||||
DBLogger.error('Unable to connect to the database:', error);
|
||||
}
|
||||
|
||||
try {
|
||||
await LabelDB.sync({ force: false, alter: true });
|
||||
DBLogger.info("All models were synchronized successfully.");
|
||||
} catch (error) {
|
||||
DBLogger.error(`Failed to synchronize models: ${error}`);
|
||||
}
|
||||
})();
|
||||
85
sequelize/job.model.mjs
Normal file
85
sequelize/job.model.mjs
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
|
||||
import {
|
||||
DataTypes
|
||||
} from 'sequelize';
|
||||
|
||||
import {
|
||||
LabelDB as Database
|
||||
} from './db_conn.mjs'
|
||||
|
||||
import {
|
||||
Queue
|
||||
} from "./queue.model.mjs";
|
||||
|
||||
import {
|
||||
Template,
|
||||
Variable
|
||||
} from "./template.model.mjs";
|
||||
|
||||
|
||||
export const Job = Database.define('job', {
|
||||
id: {
|
||||
type: DataTypes.INTEGER,
|
||||
autoIncrement: true,
|
||||
primaryKey: true
|
||||
}
|
||||
}, {
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
|
||||
export const JobValue = Database.define('jobValue', {
|
||||
id: {
|
||||
type: DataTypes.UUID,
|
||||
defaultValue: DataTypes.UUIDV4,
|
||||
primaryKey: true
|
||||
},
|
||||
key: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
value: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
}
|
||||
}, {
|
||||
tableName: 'job_values',
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
|
||||
JobValue.belongsTo(Job, {
|
||||
onDelete: 'CASCADE',
|
||||
foreignKey: {
|
||||
allowNull: false
|
||||
}
|
||||
});
|
||||
Job.hasMany(JobValue, {
|
||||
onDelete: 'CASCADE',
|
||||
foreignKey: {
|
||||
allowNull: false
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Job.belongsTo(Queue, {
|
||||
onDelete: 'CASCADE',
|
||||
foreignKey: {
|
||||
allowNull: false
|
||||
}
|
||||
});
|
||||
Queue.hasMany(Job, {
|
||||
onDelete: 'CASCADE',
|
||||
foreignKey: {
|
||||
allowNull: false
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Job.belongsTo(Template);
|
||||
Template.hasMany(Job, {
|
||||
onDelete: 'CASCADE',
|
||||
foreignKey: {
|
||||
allowNull: false
|
||||
}
|
||||
});
|
||||
102
sequelize/label.model.mjs
Normal file
102
sequelize/label.model.mjs
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
|
||||
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] + '()');
|
||||
}
|
||||
}
|
||||
54
sequelize/media.model.mjs
Normal file
54
sequelize/media.model.mjs
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
|
||||
import {
|
||||
DataTypes
|
||||
} from 'sequelize';
|
||||
|
||||
import {
|
||||
DBLogger,
|
||||
LabelDB
|
||||
} from './db_conn.mjs'
|
||||
|
||||
import {
|
||||
Template
|
||||
} from "./template.model.mjs";
|
||||
|
||||
|
||||
export const Medium = LabelDB.define('medium', {
|
||||
id: {
|
||||
type: DataTypes.UUID,
|
||||
defaultValue: DataTypes.UUIDV4,
|
||||
primaryKey: true
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
columns: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false
|
||||
},
|
||||
spacing: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false
|
||||
},
|
||||
width: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false
|
||||
}
|
||||
}, {
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
Medium.belongsToMany(Template, {
|
||||
through: 'media_templates',
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'CASCADE',
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
Template.belongsToMany(Medium, {
|
||||
through: 'media_templates',
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'CASCADE',
|
||||
timestamps: false
|
||||
});
|
||||
57
sequelize/perms.model.mjs
Normal file
57
sequelize/perms.model.mjs
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
|
||||
import {
|
||||
DataTypes
|
||||
} from 'sequelize';
|
||||
|
||||
import {
|
||||
DBLogger,
|
||||
LabelDB
|
||||
} from './db_conn.mjs'
|
||||
|
||||
export const Permission = LabelDB.define('permission', {
|
||||
permission: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
primaryKey: true
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
}
|
||||
}, {
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
|
||||
LabelDB.afterBulkSync(async () => {
|
||||
await Permission.bulkCreate([
|
||||
{
|
||||
permission: 'settings',
|
||||
name: 'edit all Settings'
|
||||
},
|
||||
{
|
||||
permission: 'settings.printer',
|
||||
name: 'edit Printers'
|
||||
},
|
||||
{
|
||||
permission: 'settings.media',
|
||||
name: 'edit Medias'
|
||||
},
|
||||
{
|
||||
permission: 'settings.queues',
|
||||
name: 'edit Queues'
|
||||
},
|
||||
{
|
||||
permission: 'settings.labels',
|
||||
name: 'edit Lables'
|
||||
}
|
||||
], {
|
||||
updateOnDuplicate: [
|
||||
'name'
|
||||
]
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
Permission.belongsTo(Permission, { as: 'parent', foreignKey: 'parentPermission' });
|
||||
Permission.hasMany(Permission, { as: 'child', foreignKey: 'parentPermission' });
|
||||
49
sequelize/printer.model.mjs
Normal file
49
sequelize/printer.model.mjs
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
|
||||
import {
|
||||
DataTypes
|
||||
} from 'sequelize';
|
||||
|
||||
import {
|
||||
DBLogger,
|
||||
LabelDB
|
||||
} from './db_conn.mjs'
|
||||
|
||||
import {
|
||||
Medium
|
||||
} from "./media.model.mjs";
|
||||
|
||||
export const Printer = LabelDB.define('printer', {
|
||||
id: {
|
||||
type: DataTypes.UUID,
|
||||
defaultValue: DataTypes.UUIDV4,
|
||||
primaryKey: true
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
type: {
|
||||
type: DataTypes.ENUM,
|
||||
values: [
|
||||
'zpl'
|
||||
],
|
||||
allowNull: false
|
||||
},
|
||||
density: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false
|
||||
},
|
||||
socket_addr: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
socket_port: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false
|
||||
}
|
||||
}, {
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
Medium.hasMany(Printer);
|
||||
Printer.belongsTo(Medium);
|
||||
36
sequelize/queue.model.mjs
Normal file
36
sequelize/queue.model.mjs
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
|
||||
import {
|
||||
DataTypes
|
||||
} from 'sequelize';
|
||||
|
||||
import {
|
||||
DBLogger,
|
||||
LabelDB
|
||||
} from './db_conn.mjs'
|
||||
|
||||
import {
|
||||
Printer
|
||||
} from "./printer.model.mjs";
|
||||
|
||||
|
||||
export const Queue = LabelDB.define('queue', {
|
||||
id: {
|
||||
type: DataTypes.UUID,
|
||||
defaultValue: DataTypes.UUIDV4,
|
||||
primaryKey: true
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
auto_print: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: false,
|
||||
allowNull: false
|
||||
}
|
||||
}, {
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
Queue.belongsTo(Printer);
|
||||
Printer.hasMany(Queue);
|
||||
114
sequelize/template.model.mjs
Normal file
114
sequelize/template.model.mjs
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
|
||||
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] + '()');
|
||||
// }
|
||||
// }
|
||||
Loading…
Add table
Add a link
Reference in a new issue