moved database models into own classes

This commit is contained in:
Daniel Sommer 2022-06-03 14:52:35 +02:00
parent 83a4f9b8e8
commit 038603314a
8 changed files with 146 additions and 54 deletions

View file

@ -62,11 +62,7 @@ class Api {
} }
let track; let track;
try { try {
track = await database.models.Track.findOne({ track = await database.models.Track.findByPk(id);
where: {
id: id
}
});
} catch (err) { } catch (err) {
logger.error('error finding track \'' + id + '\' > ' + err); logger.error('error finding track \'' + id + '\' > ' + err);
} }

View file

@ -43,7 +43,7 @@ class Database {
continue; continue;
} }
const model = require(modelFile); const model = require(modelFile);
if (model.tableName === undefined || model.sync === undefined) { if (model.createTable === undefined) {
continue; continue;
} }
modelFile = path.basename(modelFile); modelFile = path.basename(modelFile);
@ -62,7 +62,7 @@ class Database {
const model = models[index]; const model = models[index];
try { try {
const timestamp = new Date().getTime(); const timestamp = new Date().getTime();
await model.sync({ alter: true }); await model.createTable();
logger.debug('creation/alteration of table \'' + model.tableName + '\' finished after ' + (new Date().getTime() - timestamp) + 'ms'); logger.debug('creation/alteration of table \'' + model.tableName + '\' finished after ' + (new Date().getTime() - timestamp) + 'ms');
} catch (err) { } catch (err) {
logger.error('an error occured creating table \'' + model.tableName + '\' > ' + err); logger.error('an error occured creating table \'' + model.tableName + '\' > ' + err);

View file

@ -1,7 +1,23 @@
const { DataTypes } = require('sequelize'); const { DataTypes } = require('sequelize');
const Album = database.connection.define("album", { const tableName = 'album';
name: DataTypes.TEXT
});
module.exports = Album; class Album {
constructor() {
}
}
async function createTable() {
(await getModel()).sync({ alter: true });
}
async function getModel() {
return database.connection.define(tableName, {
name: DataTypes.TEXT
});
}
module.exports = { Album, createTable, tableName };

View file

@ -1,12 +1,28 @@
const { DataTypes } = require('sequelize'); const { DataTypes } = require('sequelize');
const AlbumToArtist = database.connection.define("albumtoartist", { const tableName = 'albumtoartist';
album: DataTypes.INTEGER,
artist: DataTypes.INTEGER
},
{
freezeTableName: true
}
);
module.exports = AlbumToArtist; class AlbumToArtist {
constructor() {
}
}
async function createTable() {
(await getModel()).sync({ alter: true });
}
async function getModel() {
return database.connection.define(tableName, {
album: DataTypes.INTEGER,
artist: DataTypes.INTEGER
},
{
freezeTableName: true
}
);
}
module.exports = { AlbumToArtist, createTable, tableName };

View file

@ -1,7 +1,23 @@
const { DataTypes } = require('sequelize'); const { DataTypes } = require('sequelize');
const Artist = database.connection.define("artist", { const tableName = 'artist';
name: DataTypes.TEXT
});
module.exports = Artist; class Artist {
constructor() {
}
}
async function createTable() {
(await getModel()).sync({ alter: true });
}
async function getModel() {
return database.connection.define(tableName, {
name: DataTypes.TEXT
});
}
module.exports = { Artist, createTable, tableName };

View file

@ -1,15 +1,31 @@
const { DataTypes } = require('sequelize'); const { DataTypes } = require('sequelize');
const Track = database.connection.define("track", { const tableName = 'track';
title: DataTypes.TEXT,
year: DataTypes.INTEGER,
duration: DataTypes.FLOAT,
comment: DataTypes.TEXT,
diskno: DataTypes.INTEGER,
diskof: DataTypes.INTEGER,
trackno: DataTypes.INTEGER,
trackof: DataTypes.INTEGER,
file: DataTypes.TEXT
});
module.exports = Track; class Track {
constructor() {
}
}
async function createTable() {
(await getModel()).sync({ alter: true });
}
async function getModel() {
return database.connection.define(tableName, {
title: DataTypes.TEXT,
year: DataTypes.INTEGER,
duration: DataTypes.FLOAT,
comment: DataTypes.TEXT,
diskno: DataTypes.INTEGER,
diskof: DataTypes.INTEGER,
trackno: DataTypes.INTEGER,
trackof: DataTypes.INTEGER,
file: DataTypes.TEXT
});
}
module.exports = { Track, createTable, tableName };

View file

@ -1,12 +1,28 @@
const { DataTypes } = require('sequelize'); const { DataTypes } = require('sequelize');
const TrackToAlbum = database.connection.define("tracktoalbum", { const tableName = 'tracktoalbum';
track: DataTypes.INTEGER,
album: DataTypes.INTEGER
},
{
freezeTableName: true
}
);
module.exports = TrackToAlbum; class TrackToAlbum {
constructor() {
}
}
async function createTable() {
(await getModel()).sync({ alter: true });
}
async function getModel() {
return database.connection.define(tableName, {
track: DataTypes.INTEGER,
album: DataTypes.INTEGER
},
{
freezeTableName: true
}
);
}
module.exports = { TrackToAlbum, createTable, tableName };

View file

@ -1,12 +1,28 @@
const { DataTypes } = require('sequelize'); const { DataTypes } = require('sequelize');
const TrackToArtist = database.connection.define("tracktoartist", { const tableName = 'tracktoartist'
track: DataTypes.INTEGER,
artist: DataTypes.INTEGER
},
{
freezeTableName: true
}
);
module.exports = TrackToArtist; class TrackToArtist {
constructor() {
}
}
async function createTable() {
(await getModel()).sync({ alter: true });
}
async function getModel() {
return database.connection.define(tableName, {
track: DataTypes.INTEGER,
artist: DataTypes.INTEGER
},
{
freezeTableName: true
}
);
}
module.exports = { TrackToArtist, createTable, tableName };