Skip to content
HELIX is in Closed Alpha. Some features and documentation may be non-functional or out of date.

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.