mirror of
https://github.com/BobbyWibowo/lolisafe.git
synced 2025-01-31 07:11:33 +00:00
fix: improve migration script for docker flow
This commit is contained in:
parent
104d0e99c3
commit
4488f9ae8a
@ -1,6 +1,6 @@
|
|||||||
|
const paths = require('./../controllers/pathsController')
|
||||||
const perms = require('./../controllers/permissionController')
|
const perms = require('./../controllers/permissionController')
|
||||||
const config = require('./../config')
|
const config = require('./../config')
|
||||||
const db = require('knex')(config.database)
|
|
||||||
|
|
||||||
const map = {
|
const map = {
|
||||||
files: {
|
files: {
|
||||||
@ -21,6 +21,21 @@ const map = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
;(async () => {
|
;(async () => {
|
||||||
|
if (config.database && ['better-sqlite3', 'sqlite3'].includes(config.database.client)) {
|
||||||
|
try {
|
||||||
|
await paths.access(config.database.connection.filename)
|
||||||
|
} catch (err) {
|
||||||
|
if (err.code === 'ENOENT') {
|
||||||
|
console.log('Sqlite3 database file missing. Assumes first install, migration skipped.')
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
throw err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const db = require('knex')(config.database)
|
||||||
|
let done = 0
|
||||||
|
|
||||||
const tableNames = Object.keys(map)
|
const tableNames = Object.keys(map)
|
||||||
for (const tableName of tableNames) {
|
for (const tableName of tableNames) {
|
||||||
const columnNames = Object.keys(map[tableName])
|
const columnNames = Object.keys(map[tableName])
|
||||||
@ -32,23 +47,34 @@ const map = {
|
|||||||
table[columnType](columnName)
|
table[columnType](columnName)
|
||||||
})
|
})
|
||||||
console.log(`OK: ${tableName} <- ${columnName} (${columnType})`)
|
console.log(`OK: ${tableName} <- ${columnName} (${columnType})`)
|
||||||
|
done++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await db.table('users')
|
const root = await db.table('users')
|
||||||
.where('username', 'root')
|
.where('username', 'root')
|
||||||
|
.select('permission')
|
||||||
.first()
|
.first()
|
||||||
.update({
|
if (root.permission !== perms.permissions.superadmin) {
|
||||||
permission: perms.permissions.superadmin
|
await db.table('users')
|
||||||
})
|
.where('username', 'root')
|
||||||
.then(result => {
|
.first()
|
||||||
// NOTE: permissionController.js actually has a hard-coded check for "root" account so that
|
.update({
|
||||||
// it will always have "superadmin" permission regardless of its permission value in database
|
permission: perms.permissions.superadmin
|
||||||
if (!result) return console.log('Unable to update root\'s permission into superadmin.')
|
})
|
||||||
console.log(`Updated root's permission to ${perms.permissions.superadmin} (superadmin).`)
|
.then(result => {
|
||||||
})
|
// NOTE: permissionController.js actually has a hard-coded check for "root" account so that
|
||||||
|
// it will always have "superadmin" permission regardless of its permission value in database
|
||||||
|
console.log(`Updated root's permission to ${perms.permissions.superadmin} (superadmin).`)
|
||||||
|
done++
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
console.log('Migration finished! Now you may start lolisafe normally.')
|
let status = 'Database migration was not required.'
|
||||||
|
if (done) {
|
||||||
|
status = `Completed ${done} database migration task(s).`
|
||||||
|
}
|
||||||
|
console.log(`${status} You may now start lolisafe normally.`)
|
||||||
})()
|
})()
|
||||||
.then(() => process.exit(0))
|
.then(() => process.exit(0))
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
|
Loading…
Reference in New Issue
Block a user