mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-03-01 05:29:41 +00:00
Sequelize and sqlite init with test user model
This commit is contained in:
parent
a2d4a4a906
commit
b8ab72a141
6 changed files with 2452 additions and 19 deletions
63
server/Database.js
Normal file
63
server/Database.js
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
const Path = require('path')
|
||||
const { Sequelize } = require('sequelize')
|
||||
|
||||
const Logger = require('./Logger')
|
||||
|
||||
class Database {
|
||||
constructor() {
|
||||
this.sequelize = null
|
||||
}
|
||||
|
||||
async init() {
|
||||
if (!await this.connect()) {
|
||||
throw new Error('Database connection failed')
|
||||
}
|
||||
|
||||
await this.buildModels()
|
||||
Logger.info(`[Database] Db initialized`, Object.keys(this.sequelize.models))
|
||||
}
|
||||
|
||||
async connect() {
|
||||
const dbPath = Path.join(global.ConfigPath, 'database.sqlite')
|
||||
Logger.info(`[Database] Initializing db at "${dbPath}"`)
|
||||
this.sequelize = new Sequelize({
|
||||
dialect: 'sqlite',
|
||||
storage: dbPath
|
||||
})
|
||||
|
||||
try {
|
||||
await this.sequelize.authenticate()
|
||||
Logger.info(`[Database] Db connection was successful`)
|
||||
return true
|
||||
} catch (error) {
|
||||
Logger.error(`[Database] Failed to connect to db`, error)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
buildModels() {
|
||||
require('./models/User')(this.sequelize)
|
||||
|
||||
return this.sequelize.sync()
|
||||
}
|
||||
|
||||
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())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = new Database()
|
||||
Loading…
Add table
Add a link
Reference in a new issue