コード例 #1
0
ファイル: sql.js プロジェクト: chrisdew/sequelize
 'SQL: hashToWhereConditions': function() {
   var s = new Sequelize('sequelize_test', 'test', 'test')
   var Day = s.define('Day', { name: Sequelize.TEXT })
   var day = new Day({name: 'asd'})
   assert.equal(h.SQL.hashToWhereConditions(5, Day.attributes), '`id`=5')
   assert.equal(h.SQL.hashToWhereConditions({name: 'asd'}, Day.attributes), "`name`='asd'")
 },
コード例 #2
0
ファイル: sql.js プロジェクト: chrisdew/sequelize
 'SQL: valuesForUpdate': function() {
   var s = new Sequelize('sequelize_test', 'test', 'test')
   var Day = s.define('Day', { name: Sequelize.TEXT })
   var day = new Day({name: 'asd'})
   assert.equal(h.SQL.valuesForUpdate(day), "`name` = 'asd', `createdAt` = NULL, `updatedAt` = NULL")
   assert.equal(h.SQL.valuesForUpdate(day, {seperator: '; '}), "`name` = 'asd'; `createdAt` = NULL; `updatedAt` = NULL")
 },
コード例 #3
0
ファイル: transaction.test.js プロジェクト: Znarkus/sequelize
    it('provides persistent transactions', function () {
      var sequelize = new Support.Sequelize('database', 'username', 'password', {dialect: 'sqlite'})
        , User = sequelize.define('user', {
            username: Support.Sequelize.STRING,
            awesome: Support.Sequelize.BOOLEAN
          })
        , persistentTransaction;

      return sequelize.transaction().then(function(t) {
        return sequelize.sync({ transaction:t }).then(function( ) {
          return t;
        });
      }).then(function(t) {
        return User.create({}, {transaction:t}).then(function( ) {
          return t.commit();
        });
      }).then(function() {
        return sequelize.transaction().then(function(t) {
          persistentTransaction = t;
        });
      }).then(function() {
        return User.findAll({transaction: persistentTransaction}).then(function(users) {
          expect(users.length).to.equal(1);
          return persistentTransaction.commit();
        });
      });
    });
コード例 #4
0
ファイル: SequelizeTest.js プロジェクト: jibarra64/sequelize
  'drop: errors': function(assert, beforeExit) {
    var testIsFinished = false,
        sequelizeWithInvalidCredentials = new Sequelize('foo', 'bar', 'barfoos'),
        Fail = sequelizeWithInvalidCredentials.define('Fail', {})

    sequelizeWithInvalidCredentials.drop(function(errors) {
      assert.isDefined(errors)
      assert.equal(errors.length, 1)
      testIsFinished = true
    })
    beforeExit(function() { assert.equal(testIsFinished, true) })
  }
コード例 #5
0
ファイル: hooks.test.js プロジェクト: pchipel1/sequelize
    it('runs all beforInit/afterInit hooks', function() {
      Support.Sequelize.addHook('beforeInit', 'h1', this.hook1);
      Support.Sequelize.addHook('beforeInit', 'h2', this.hook2);
      Support.Sequelize.addHook('afterInit', 'h3', this.hook3);
      Support.Sequelize.addHook('afterInit', 'h4', this.hook4);

      Support.createSequelizeInstance();

      expect(this.hook1).to.have.been.calledOnce;
      expect(this.hook2).to.have.been.calledOnce;
      expect(this.hook3).to.have.been.calledOnce;
      expect(this.hook4).to.have.been.calledOnce;

      // cleanup hooks on Support.Sequelize
      Support.Sequelize.removeHook('beforeInit', 'h1');
      Support.Sequelize.removeHook('beforeInit', 'h2');
      Support.Sequelize.removeHook('afterInit', 'h3');
      Support.Sequelize.removeHook('afterInit', 'h4');

      Support.createSequelizeInstance();

      // check if hooks were removed
      expect(this.hook1).to.have.been.calledOnce;
      expect(this.hook2).to.have.been.calledOnce;
      expect(this.hook3).to.have.been.calledOnce;
      expect(this.hook4).to.have.been.calledOnce;
    });
コード例 #6
0
ファイル: transaction.test.js プロジェクト: Znarkus/sequelize
 it('do not rollback if already committed', function() {
   var SumSumSum = this.sequelize.define('transaction', {
         value: {
           type: Support.Sequelize.DECIMAL(10, 3),
           field: 'value'
         }
       })
     , transTest = function (val) {
         return self.sequelize.transaction({isolationLevel: 'SERIALIZABLE'}, function(t) {
           return SumSumSum.sum('value', {transaction: t}).then(function (balance) {
             return SumSumSum.create({value: -val}, {transaction: t});
           });
         });
       }
     , self = this;
   // Attention: this test is a bit racy. If you find a nicer way to test this: go ahead
   return SumSumSum.sync({force: true}).then(function () {
     return (expect(Promise.join(transTest(80), transTest(80), transTest(80))).to.eventually.be.rejectedWith('could not serialize access due to read/write dependencies among transactions'));
   }).delay(100).then(function() {
     if (self.sequelize.test.$runningQueries !== 0) {
       return self.sequelize.Promise.delay(200);
     }
     return void 0;
   }).then(function() {
     if (self.sequelize.test.$runningQueries !== 0) {
       return self.sequelize.Promise.delay(500);
     }
   });
 });
コード例 #7
0
ファイル: SequelizeTest.js プロジェクト: jibarra64/sequelize
 'sqlQueryFor: select': function(assert) {
   assert.equal(Sequelize.sqlQueryFor('select', { table: 'Foo'}), "SELECT * FROM Foo")
   assert.equal(Sequelize.sqlQueryFor('select', { table: 'Foo', fields: 'id'}), "SELECT id FROM Foo")
   assert.equal(Sequelize.sqlQueryFor('select', { table: 'Foo', where: 'id = 1'}), "SELECT * FROM Foo WHERE id = 1")
   assert.equal(Sequelize.sqlQueryFor('select', { table: 'Foo', order: 'id DESC'}), "SELECT * FROM Foo ORDER BY id DESC")
   assert.equal(Sequelize.sqlQueryFor('select', { table: 'Foo', group: 'name'}), "SELECT * FROM Foo GROUP BY name")
   assert.equal(Sequelize.sqlQueryFor('select', { table: 'Foo', limit: 1}), "SELECT * FROM Foo LIMIT 1")
   assert.equal(Sequelize.sqlQueryFor('select', { table: 'Foo', offset: 10, limit: 1}), "SELECT * FROM Foo LIMIT 10, 1")
 },
コード例 #8
0
ファイル: sqlQueryFor.js プロジェクト: chrisdew/sequelize
 'sqlQueryFor: select': function() {
   assert.equal(Sequelize.sqlQueryFor('select', { table: 'Foo'}), "SELECT * FROM `Foo`")
   assert.equal(Sequelize.sqlQueryFor('select', { table: 'Foo', fields: ['id']}), "SELECT `id` FROM `Foo`")
   assert.equal(Sequelize.sqlQueryFor('select', { table: 'Foo', where: {id: 1}}), "SELECT * FROM `Foo` WHERE `id`=1")
   assert.equal(Sequelize.sqlQueryFor('select', { table: 'Foo', order: 'id DESC'}), "SELECT * FROM `Foo` ORDER BY id DESC")
   assert.equal(Sequelize.sqlQueryFor('select', { table: 'Foo', group: 'name'}), "SELECT * FROM `Foo` GROUP BY name")
   assert.equal(Sequelize.sqlQueryFor('select', { table: 'Foo', limit: 1}), "SELECT * FROM `Foo` LIMIT 1")
   assert.equal(Sequelize.sqlQueryFor('select', { table: 'Foo', offset: 10, limit: 1}), "SELECT * FROM `Foo` LIMIT 10, 1")
 },
コード例 #9
0
ファイル: app.js プロジェクト: AR-labs/DropIn
Sequelize.chainQueries([{drop: sequelize}, {sync: sequelize}], function() {
  var person  = new Person({ name: 'Luke' }),
      pet1    = new Pet({ name: 'Bob' }),
      pet2    = new Pet({ name: 'Aaron' })

  Sequelize.chainQueries([{save: person}, {save: pet1}, {save: pet2}], function() {
    person.setPets([pet1], function(pets) {

      Sequelize.Helper.log('my pet: ' + pets[0].name )
      Sequelize.Helper.log("Now let's get the same data with fetchData!")

      person.fetchAssociations(function(data) {
        Sequelize.Helper.log("And here we are: " + data.pets[0].name)
        Sequelize.Helper.log("The object should now also contain the data: " + person.fetchedAssociations.pets[0].name)

        Sequelize.Helper.log('This won\'t do a database request!')
        person.getPets(function(pets) {

          Sequelize.Helper.log("Pets: " + pets.map(function(pet) { return pet.name }).join(", "))
          Sequelize.Helper.log("Let's associate with another pet...")

          person.setPets([pet1, pet2], function() {

            Sequelize.Helper.log("The set call has stored the pets as associated data!")
            Sequelize.Helper.log("And now let's find the pets again! This will make no new database request but serve the already stored pets Bob and Aaron!")

            person.getPets(function(pets) {

              Sequelize.Helper.log("Pets: " + pets.map(function(pet) { return pet.name }).join(", "))
              Sequelize.Helper.log("Now let's force the reloading of pets!")

              person.getPets({refetchAssociations: true}, function(pets) {

                Sequelize.Helper.log("Pets: " + pets.map(function(pet) { return pet.name }).join(", "))

                Person.find(person.id, { fetchAssociations: true }, function(p) {
                  var petNames = p.fetchedAssociations.pets.map(function(pet) { return pet.name }).join(", ")
                  Sequelize.Helper.log('Works with find as well: ' + petNames)
                })

                Person.findAll({ fetchAssociations: true }, function(people) {
                  var petNames = people[0].fetchedAssociations.pets.map(function(pet) { return pet.name }).join(", ")
                  Sequelize.Helper.log('And also with findAll: ' + petNames)
                })

              })
            })
          })
        })
      })
    })
  })
})
コード例 #10
0
ファイル: app.js プロジェクト: jibarra64/sequelize
Sequelize.chainQueries([{drop: sequelize}, {sync: sequelize}], function() {
  var person  = new Person({ name: 'Luke' }),
      mother  = new Person({ name: 'Jane' }),
      father  = new Person({ name: 'John' }),
      brother = new Person({ name: 'Brother' }),
      sister  = new Person({ name: 'Sister' }),
      pet     = new Pet({ name: 'Bob' })
   
  Sequelize.chainQueries([{save: person}, {save: mother}, {save: father}, {save: brother}, {save: sister}, {save: pet}], function() {
    person.setMother(mother, function(mom) { Sequelize.Helper.log('my mom: ' + mom.name) })
    person.setFather(father, function(dad) { Sequelize.Helper.log('my dad: ' + dad.name) })
    person.setBrothers([brother], function(bros) { Sequelize.Helper.log("ma bro: " + bros[0].name)})
    person.setSisters([sister], function(sis) { Sequelize.Helper.log("ma sis: " + sis[0].name)})
    person.setPets([pet], function(pets) { Sequelize.Helper.log('my pet: ' + pets[0].name )})
  })
})
コード例 #11
0
ファイル: app.js プロジェクト: chrisdew/sequelize
var sys = require("sys")
var Class = function(){ sys.log("You've just created a new instance!") }
Class.prototype.add = function(a,b,callback){
  this.result = a + b
  sys.log("The result: " + this.result)
  callback(this.result)
}




sys.log("First of all the old and obsolete way:")

Sequelize.chainQueries([
  {add: (new Class()), params: [1, 2]},
  {add: (new Class()), params: [2, 3]}
], function() {
  sys.log("And we did it!")
})


sys.puts("")
sys.log("The new fashioned way is about removing the array and pass an arbitrary amount of parameters!")
sys.log("Just pass as many hashes as you want, but at the end a function as callback!")

Sequelize.chainQueries(
  {add: new Class(), params: [1, 2]},
  {add: new Class(), params: [2, 3]},
  function() { sys.log("And we did it! Great!") }
)

コード例 #12
0
ファイル: SequelizeTest.js プロジェクト: jibarra64/sequelize
 'sqlQueryFor: delete wihtout limit': function(assert) {
   var query = Sequelize.sqlQueryFor('delete', {table: 'Foo', where: "id=2", limit: null})
   assert.equal(query, "DELETE FROM Foo WHERE id=2")
 },
コード例 #13
0
ファイル: sqlQueryFor.js プロジェクト: chrisdew/sequelize
 'sqlQueryFor: insert': function() {
   var query = Sequelize.sqlQueryFor('insert', { table: 'Foo', fields: ['foo'], values: "'bar'" })
   assert.equal(query, "INSERT INTO `Foo` (`foo`) VALUES ('bar')")
 },
コード例 #14
0
ファイル: SequelizeTest.js プロジェクト: jibarra64/sequelize
 'sqlQueryFor: update': function(assert) {
   var query = Sequelize.sqlQueryFor('update', { table: 'Foo', values: "foo=1", id: 2 })
   assert.equal(query, "UPDATE Foo SET foo=1 WHERE id = 2")
 },
コード例 #15
0
ファイル: SequelizeTest.js プロジェクト: jibarra64/sequelize
 'sqlQueryFor: delete': function(assert) {
   var query = Sequelize.sqlQueryFor('delete', {table: 'Foo', where: "id=2"})
   assert.equal(query, "DELETE FROM Foo WHERE id=2 LIMIT 1")
 },
コード例 #16
0
ファイル: transaction.test.js プロジェクト: Znarkus/sequelize
 }).then(function() {
   return sequelize.transaction().then(function(t) {
     persistentTransaction = t;
   });
 }).then(function() {
コード例 #17
0
 }).then(() => {
   return sequelize.transaction().then(t => {
     persistentTransaction = t;
   });
 }).then(() => {
コード例 #18
0
ファイル: SequelizeTest.js プロジェクト: jibarra64/sequelize
 'sqlQueryFor: create': function(assert) {
   var query = Sequelize.sqlQueryFor('create', { table: 'Foo', fields: 'a INT' })
   assert.equal(query, "CREATE TABLE IF NOT EXISTS Foo (a INT)")
 },
コード例 #19
0
ファイル: SequelizeTest.js プロジェクト: jibarra64/sequelize
 'sqlQueryFor: drop': function(assert) {
   var query = Sequelize.sqlQueryFor('drop', { table: 'Foo' })
   assert.equal(query, "DROP TABLE IF EXISTS Foo")
 },
コード例 #20
0
ファイル: sqlQueryFor.js プロジェクト: chrisdew/sequelize
 'sqlQueryFor: delete with limit': function() {
   var query = Sequelize.sqlQueryFor('delete', {table: 'Foo', where: {id: 2}, limit: 10})
   assert.equal(query, "DELETE FROM `Foo` WHERE `id`=2 LIMIT 10")
 }
コード例 #21
0
ファイル: SequelizeTest.js プロジェクト: jibarra64/sequelize
 'tableNames should be no empty array if tables are specified': function(assert) {
   s.define('Day', { name: Sequelize.TEXT })
   assert.deepEqual(s.tableNames, ['Days'])
 },
コード例 #22
0
ファイル: SequelizeTest.js プロジェクト: jibarra64/sequelize
 'define should return a function': function(assert){
   var Day = s.define('Day', { name: Sequelize.TEXT })
   assert.equal(typeof Day, 'function')
 },
コード例 #23
0
 .then(function( ) {
   return sequelize.transaction();
 })
コード例 #24
0
ファイル: app.js プロジェクト: chrisdew/sequelize
/*
  Title: Default values

  This example demonstrates the use of default values for defined model fields. Instead of just specifying the datatype,
  you have to pass a hash with a type and a default. You also might want to specify either an attribute can be null or not!
*/

var Sequelize = require(__dirname + "/../../lib/sequelize/Sequelize").Sequelize,
    sequelize = new Sequelize("sequelize_test", "root", null),
    User      = sequelize.define('User', {
      name: { type: Sequelize.STRING, allowNull: false},
      isAdmin: { type: Sequelize.BOOLEAN, allowNull: false, default: false }
    }),
    user      = new User({ name: 'Someone' })
    
Sequelize.chainQueries([{drop: User}, {sync: User}], function() {
  user.save(function(user) {
    Sequelize.Helper.log("user.isAdmin should be the default value (false): " + user.isAdmin)
    
    user.updateAttributes({ isAdmin: true }, function(user) {
      Sequelize.Helper.log("user.isAdmin was overwritten to true: " + user.isAdmin)
    })
  })
})
コード例 #25
0
ファイル: sql.js プロジェクト: chrisdew/sequelize
 'SQL: fieldsForInsertQuery': function() {
   var s = new Sequelize('sequelize_test', 'test', 'test')
   var Day = s.define('Day', { name: Sequelize.TEXT })
   var result = h.SQL.fieldsForInsertQuery(new Day({name: 'asd'}))
   assert.eql(result, '`name`, `createdAt`, `updatedAt`')
 },
コード例 #26
0
ファイル: sqlQueryFor.js プロジェクト: chrisdew/sequelize
 'sqlQueryFor: update': function() {
   var query = Sequelize.sqlQueryFor('update', { table: 'Foo', values: {foo : 1}, id: 2 })
   assert.equal(query, "UPDATE `Foo` SET `foo`=1 WHERE `id`=2")
 },
コード例 #27
0
ファイル: transaction.test.js プロジェクト: Znarkus/sequelize
 return sequelize.transaction().then(function(t) {
   return sequelize.sync({ transaction:t }).then(function( ) {
     return t;
   });
 }).then(function(t) {
コード例 #28
0
ファイル: SequelizeTest.js プロジェクト: jibarra64/sequelize
 'sqlQueryFor: insert': function(assert) {
   var query = Sequelize.sqlQueryFor('insert', { table: 'Foo', fields: 'foo', values: "'bar'" })
   assert.equal(query, "INSERT INTO Foo (foo) VALUES ('bar')")
 },
コード例 #29
0
ファイル: SequelizeTest.js プロジェクト: jibarra64/sequelize
 'define should add new table to tables': function(assert) {
   var Day = s.define('Day', { name: Sequelize.TEXT })
   assert.includes(Sequelize.Helper.Hash.keys(Day.sequelize.tables), 'Day')
 },
コード例 #30
0
 return sequelize.transaction().then(t => {
   return sequelize.sync({ transaction: t }).then(( ) => {
     return t;
   });
 }).then(t => {