diff --git a/index.js b/index.js index c8f23922..78697bdd 100644 --- a/index.js +++ b/index.js @@ -36,7 +36,7 @@ const connect = async function connect(opts) { return realm; }; -Object.assign(Realm.prototype, migrations); +Object.assign(Realm.prototype, migrations, { DataTypes }); Object.assign(Realm, { connect, Bone, diff --git a/src/realm.js b/src/realm.js index 809fc289..d32df32c 100644 --- a/src/realm.js +++ b/src/realm.js @@ -129,11 +129,6 @@ class Realm { this.options = Spine.options = options; } - get DataTypes() { - if (!this.driver) throw new Error('database not connected yet'); - return this.driver.DataTypes; - } - define(name, attributes, opts = {}, descriptors = {}) { const Model = class extends this.Bone { static name = name; diff --git a/test/unit/realm.test.js b/test/unit/realm.test.js index 1cc5b112..48366e89 100644 --- a/test/unit/realm.test.js +++ b/test/unit/realm.test.js @@ -1021,4 +1021,22 @@ describe('=> Realm', () => { assert.equal(Post.attributes.deletedAt.columnName, 'gmt_deleted'); }); }); + + describe('realm.DataTypes', function() { + it('DataTypes should be invokable', async function() { + const realm = new Realm({ + port: process.env.MYSQL_PORT, + user: 'root', + database: 'leoric', + }); + await realm.connect(); + assert.equal(realm.DataTypes, DataTypes); + const { STRING } = realm.DataTypes; + const Note = realm.define('Note', { + name: { type: STRING(255) }, + }); + await Note.sync({ force: true }); + await Note.create({ name: 'Link' }); + }); + }); });