mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	Sequelize and sqlite init with test user model
This commit is contained in:
		
							parent
							
								
									a2d4a4a906
								
							
						
					
					
						commit
						b8ab72a141
					
				@ -14,7 +14,10 @@ RUN apk update && \
 | 
				
			|||||||
    apk add --no-cache --update \
 | 
					    apk add --no-cache --update \
 | 
				
			||||||
    curl \
 | 
					    curl \
 | 
				
			||||||
    tzdata \
 | 
					    tzdata \
 | 
				
			||||||
    ffmpeg
 | 
					    ffmpeg \
 | 
				
			||||||
 | 
					    make \
 | 
				
			||||||
 | 
					    python3 \
 | 
				
			||||||
 | 
					    g++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPY --from=tone /usr/local/bin/tone /usr/local/bin/
 | 
					COPY --from=tone /usr/local/bin/tone /usr/local/bin/
 | 
				
			||||||
COPY --from=build /client/dist /client/dist
 | 
					COPY --from=build /client/dist /client/dist
 | 
				
			||||||
@ -23,6 +26,8 @@ COPY server server
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
RUN npm ci --only=production
 | 
					RUN npm ci --only=production
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RUN apk del make python3 g++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXPOSE 80
 | 
					EXPOSE 80
 | 
				
			||||||
HEALTHCHECK \
 | 
					HEALTHCHECK \
 | 
				
			||||||
    --interval=30s \
 | 
					    --interval=30s \
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										2376
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2376
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -35,7 +35,9 @@
 | 
				
			|||||||
    "graceful-fs": "^4.2.10",
 | 
					    "graceful-fs": "^4.2.10",
 | 
				
			||||||
    "htmlparser2": "^8.0.1",
 | 
					    "htmlparser2": "^8.0.1",
 | 
				
			||||||
    "node-tone": "^1.0.1",
 | 
					    "node-tone": "^1.0.1",
 | 
				
			||||||
 | 
					    "sequelize": "^6.29.1",
 | 
				
			||||||
    "socket.io": "^4.5.4",
 | 
					    "socket.io": "^4.5.4",
 | 
				
			||||||
 | 
					    "sqlite3": "^5.1.4",
 | 
				
			||||||
    "xml2js": "^0.4.23"
 | 
					    "xml2js": "^0.4.23"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										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()
 | 
				
			||||||
@ -17,6 +17,7 @@ const Auth = require('./Auth')
 | 
				
			|||||||
const Watcher = require('./Watcher')
 | 
					const Watcher = require('./Watcher')
 | 
				
			||||||
const Scanner = require('./scanner/Scanner')
 | 
					const Scanner = require('./scanner/Scanner')
 | 
				
			||||||
const Db = require('./Db')
 | 
					const Db = require('./Db')
 | 
				
			||||||
 | 
					const Database = require('./Database')
 | 
				
			||||||
const SocketAuthority = require('./SocketAuthority')
 | 
					const SocketAuthority = require('./SocketAuthority')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const ApiRouter = require('./routers/ApiRouter')
 | 
					const ApiRouter = require('./routers/ApiRouter')
 | 
				
			||||||
@ -110,6 +111,10 @@ class Server {
 | 
				
			|||||||
      await this.db.init()
 | 
					      await this.db.init()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // TODO: Test new db connection
 | 
				
			||||||
 | 
					    await Database.init()
 | 
				
			||||||
 | 
					    await Database.createTestUser()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Create token secret if does not exist (Added v2.1.0)
 | 
					    // Create token secret if does not exist (Added v2.1.0)
 | 
				
			||||||
    if (!this.db.serverSettings.tokenSecret) {
 | 
					    if (!this.db.serverSettings.tokenSecret) {
 | 
				
			||||||
      await this.auth.initTokenSecret()
 | 
					      await this.auth.initTokenSecret()
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										14
									
								
								server/models/User.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								server/models/User.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					const { DataTypes, Model } = require('sequelize')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = (sequelize) => {
 | 
				
			||||||
 | 
					  class User extends Model { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  User.init({
 | 
				
			||||||
 | 
					    username: DataTypes.STRING
 | 
				
			||||||
 | 
					  }, {
 | 
				
			||||||
 | 
					    sequelize,
 | 
				
			||||||
 | 
					    modelName: 'User'
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return User
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user