From 038603314ab049e83116d556a46c8d88f2892e3e Mon Sep 17 00:00:00 2001 From: velvettear Date: Fri, 3 Jun 2022 14:52:35 +0200 Subject: [PATCH] moved database models into own classes --- classes/Api.js | 6 +----- classes/Database.js | 4 ++-- models/Album.js | 24 ++++++++++++++++++++---- models/AlbumToArtist.js | 34 +++++++++++++++++++++++++--------- models/Artist.js | 24 ++++++++++++++++++++---- models/Track.js | 40 ++++++++++++++++++++++++++++------------ models/TrackToAlbum.js | 34 +++++++++++++++++++++++++--------- models/TrackToArtist.js | 34 +++++++++++++++++++++++++--------- 8 files changed, 146 insertions(+), 54 deletions(-) diff --git a/classes/Api.js b/classes/Api.js index f55127d..7a1ef45 100644 --- a/classes/Api.js +++ b/classes/Api.js @@ -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); } diff --git a/classes/Database.js b/classes/Database.js index ffd3a85..888f539 100644 --- a/classes/Database.js +++ b/classes/Database.js @@ -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); diff --git a/models/Album.js b/models/Album.js index b5e888c..33f612f 100644 --- a/models/Album.js +++ b/models/Album.js @@ -1,7 +1,23 @@ const { DataTypes } = require('sequelize'); -const Album = database.connection.define("album", { - name: DataTypes.TEXT -}); +const tableName = 'album'; -module.exports = Album; \ No newline at end of file +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 }; \ No newline at end of file diff --git a/models/AlbumToArtist.js b/models/AlbumToArtist.js index 9b25a96..7070711 100644 --- a/models/AlbumToArtist.js +++ b/models/AlbumToArtist.js @@ -1,12 +1,28 @@ const { DataTypes } = require('sequelize'); -const AlbumToArtist = database.connection.define("albumtoartist", { - album: DataTypes.INTEGER, - artist: DataTypes.INTEGER -}, - { - freezeTableName: true - } -); +const tableName = 'albumtoartist'; -module.exports = AlbumToArtist; \ No newline at end of file +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 }; \ No newline at end of file diff --git a/models/Artist.js b/models/Artist.js index 090db96..2d20153 100644 --- a/models/Artist.js +++ b/models/Artist.js @@ -1,7 +1,23 @@ const { DataTypes } = require('sequelize'); -const Artist = database.connection.define("artist", { - name: DataTypes.TEXT -}); +const tableName = 'artist'; -module.exports = Artist; \ No newline at end of file +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 }; \ No newline at end of file diff --git a/models/Track.js b/models/Track.js index 0865111..d653279 100644 --- a/models/Track.js +++ b/models/Track.js @@ -1,15 +1,31 @@ const { DataTypes } = require('sequelize'); -const Track = database.connection.define("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 -}); +const tableName = 'track'; -module.exports = Track; \ No newline at end of file +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 }; \ No newline at end of file diff --git a/models/TrackToAlbum.js b/models/TrackToAlbum.js index 450e8ec..cfba3b1 100644 --- a/models/TrackToAlbum.js +++ b/models/TrackToAlbum.js @@ -1,12 +1,28 @@ const { DataTypes } = require('sequelize'); -const TrackToAlbum = database.connection.define("tracktoalbum", { - track: DataTypes.INTEGER, - album: DataTypes.INTEGER -}, - { - freezeTableName: true - } -); +const tableName = 'tracktoalbum'; -module.exports = TrackToAlbum; \ No newline at end of file +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 }; \ No newline at end of file diff --git a/models/TrackToArtist.js b/models/TrackToArtist.js index 544dc06..706d43c 100644 --- a/models/TrackToArtist.js +++ b/models/TrackToArtist.js @@ -1,12 +1,28 @@ const { DataTypes } = require('sequelize'); -const TrackToArtist = database.connection.define("tracktoartist", { - track: DataTypes.INTEGER, - artist: DataTypes.INTEGER -}, - { - freezeTableName: true - } -); +const tableName = 'tracktoartist' -module.exports = TrackToArtist; \ No newline at end of file +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 }; \ No newline at end of file