initial upload

This commit is contained in:
Kai Waggeling 2025-05-17 16:23:48 +02:00
parent ac114da487
commit 7c1cfdff51
63 changed files with 6883 additions and 0 deletions

34
sequelize/apps.model.mjs Normal file
View 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
View 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
View 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
View 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
View 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
View 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' });

View 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
View 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);

View 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] + '()');
// }
// }