Skip to main content

Helix.Database

Description

Helix.Database provides Sequelize-based database access. Connect to MySQL (or other supported dialects), define models, sync schema, and run create/find/update/remove and raw SQL.

Methods

connect (config, source)

Connect to database. Async.

await Helix.Database.connect({
host: 'localhost',
database: 'gamedb',
username: 'root',
password: 'pass',
dialect: 'mysql'
})

disconnect ()

Disconnect from database. Async.

await Helix.Database.disconnect()
console.log('Database disconnected')

listTables ()

List all tables. Async.

const tables = await Helix.Database.listTables()
console.log('Tables:', tables)

defineModel (name, schema, options)

Define database model.

const Player = Helix.Database.defineModel('Players', {
id: {
type: Helix.Database.DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
helixId: {
type: Helix.Database.DataTypes.STRING,
allowNull: false
},
firstName: Helix.Database.DataTypes.STRING,
health: {
type: Helix.Database.DataTypes.FLOAT,
defaultValue: 100
}
})

sync (force)

Sync models with database. Async.

await Helix.Database.sync()

await Helix.Database.sync(true)

create (model, data)

Create new record. Async.

await Helix.Database.create('Players', {
helixId: '76561198067334932',
firstName: 'John',
lastName: 'Doe',
health: 100
})

findOne (model, where)

Find single record. Async.

const player = await Helix.Database.findOne('Players', {
helixId: '76561198067334932',
active: true
})
console.log('Player:', player.firstName)

findAll (model, where, options)

Find all records. Async.

const players = await Helix.Database.findAll('Players', {
active: true
}, {
order: [['id', 'ASC']]
})

const highLevelPlayers = await Helix.Database.findAll('Players', {
level: { [Helix.Database.Op.gte]: 10 }
})

update (model, values, where)

Update records. Async.

await Helix.Database.update('Players',
{ health: 100 },
{ helixId: '76561198067334932' }
)

await Helix.Database.update('Players',
{ active: false },
{ helixId: helixId.toString() }
)

remove (model, where)

Delete records. Async.

await Helix.Database.remove('Players', {
helixId: helixId.toString(),
slot: 1
})

raw (sql, replacements)

Execute raw SQL. Async.

const result = await Helix.Database.raw(
'SELECT * FROM Players WHERE health > :minHealth',
{ minHealth: 50 }
)

await Helix.Database.raw('CREATE DATABASE IF NOT EXISTS `gamedb`')

Exports

DataTypes

Sequelize data types (STRING, INTEGER, FLOAT, etc). Use as Helix.Database.DataTypes.

Op

Sequelize operators (gte, lte, like, etc). Use as Helix.Database.Op.