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;
try {
track = await database.models.Track.findOne({
where: {
id: id
}
});
track = await database.models.Track.findByPk(id);
} catch (err) {
logger.error('error finding track \'' + id + '\' > ' + err);
}

View file

@ -43,7 +43,7 @@ class Database {
continue;
}
const model = require(modelFile);
if (model.tableName === undefined || model.sync === undefined) {
if (model.createTable === undefined) {
continue;
}
modelFile = path.basename(modelFile);
@ -62,7 +62,7 @@ class Database {
const model = models[index];
try {
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');
} catch (err) {
logger.error('an error occured creating table \'' + model.tableName + '\' > ' + err);

View file

@ -1,7 +1,23 @@
const { DataTypes } = require('sequelize');
const Album = database.connection.define("album", {
name: DataTypes.TEXT
});
const tableName = 'album';
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 AlbumToArtist = database.connection.define("albumtoartist", {
const tableName = '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;
module.exports = { AlbumToArtist, createTable, tableName };

View file

@ -1,7 +1,23 @@
const { DataTypes } = require('sequelize');
const Artist = database.connection.define("artist", {
name: DataTypes.TEXT
});
const tableName = 'artist';
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,6 +1,21 @@
const { DataTypes } = require('sequelize');
const Track = database.connection.define("track", {
const tableName = '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,
@ -10,6 +25,7 @@ const Track = database.connection.define("track", {
trackno: DataTypes.INTEGER,
trackof: DataTypes.INTEGER,
file: DataTypes.TEXT
});
});
}
module.exports = Track;
module.exports = { Track, createTable, tableName };

View file

@ -1,12 +1,28 @@
const { DataTypes } = require('sequelize');
const TrackToAlbum = database.connection.define("tracktoalbum", {
const tableName = '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;
module.exports = { TrackToAlbum, createTable, tableName };

View file

@ -1,12 +1,28 @@
const { DataTypes } = require('sequelize');
const TrackToArtist = database.connection.define("tracktoartist", {
const tableName = '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;
module.exports = { TrackToArtist, createTable, tableName };