Update model casing & associations

This commit is contained in:
advplyr 2023-03-19 15:19:22 -05:00
parent 2131a65299
commit 54ca58e610
45 changed files with 830 additions and 561 deletions

View file

@ -12,12 +12,12 @@ class Database {
return this.sequelize?.models || {}
}
async init() {
async init(force = false) {
if (!await this.connect()) {
throw new Error('Database connection failed')
}
await this.buildModels()
await this.buildModels(force)
Logger.info(`[Database] Db initialized`, Object.keys(this.sequelize.models))
}
@ -30,6 +30,9 @@ class Database {
logging: false
})
// Helper function
this.sequelize.uppercaseFirst = str => str ? `${str[0].toUpperCase()}${str.substr(1)}` : ''
try {
await this.sequelize.authenticate()
Logger.info(`[Database] Db connection was successful`)
@ -40,15 +43,15 @@ class Database {
}
}
buildModels() {
buildModels(force = false) {
require('./models/User')(this.sequelize)
require('./models/FileMetadata')(this.sequelize)
require('./models/Library')(this.sequelize)
require('./models/LibraryFolder')(this.sequelize)
require('./models/LibraryItem')(this.sequelize)
require('./models/EBookFile')(this.sequelize)
require('./models/Book')(this.sequelize)
require('./models/Podcast')(this.sequelize)
require('./models/Library')(this.sequelize)
require('./models/LibraryFolder')(this.sequelize)
require('./models/LibraryItem')(this.sequelize)
require('./models/PodcastEpisode')(this.sequelize)
require('./models/MediaProgress')(this.sequelize)
require('./models/LibraryFile')(this.sequelize)
@ -82,24 +85,7 @@ class Database {
require('./models/Notification')(this.sequelize)
require('./models/UserPermission')(this.sequelize)
return this.sequelize.sync({ force: true })
}
async createTestUser() {
const User = this.sequelize.models.User
let user = await User.findOne({
where: {
username: 'Tester'
}
})
if (user) {
Logger.info(`[Database] Tester user was found`, user.toJSON())
} else {
user = await User.create({ username: 'Tester' })
Logger.info(`[Database] Created Tester user`, user.toJSON())
}
return this.sequelize.sync({ force })
}
}