From b9b727e20d05b1cf1344691592887802c6715882 Mon Sep 17 00:00:00 2001 From: Chen Yangjian <252317+cyjake@users.noreply.github.com> Date: Thu, 24 Feb 2022 16:05:37 +0800 Subject: [PATCH] fix: realm.DataTypes should be invokable (#282) --- index.js | 2 +- src/realm.js | 5 ----- test/unit/realm.test.js | 18 ++++++++++++++++++ 3 files changed, 19 insertions(+), 6 deletions(-) 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' }); + }); + }); });