const Sequelize = require('sequelize');

const sequelize = new Sequelize('ormtest', 'root', '456', {
  host:'localhost',
  dialect: 'mysql',
  pool: {
    max: 5,
    min: 0,
    idle: 10000
  }
});

sequelize
  .authenticate()
  .then(() => {
    console.log('Connection has been established successfully.');
  })
  .catch(err => {
    console.error('Unable to connect to the database:', err);
  });

// const User = sequelize.define('user', {
//   username: Sequelize.STRING,
//   birthday: Sequelize.DATE
// });

// sequelize.sync()
//   .then(() => User.create({
//     username: 'janedoe',
//     birthday: new Date(1980, 6, 20)
//   }))
//   .then(jane => {
//     console.log(jane.get({
//       plain: true
//     }));
//   });


const User = sequelize.define('user', {
  firstName: {
    type: Sequelize.STRING
  },
  lastName: {
    type: Sequelize.STRING
  }
});

// force: true will drop the table if it already exists
// User.sync({force: true}).then(() => {
//   // Table created
//   return User.create({
//     firstName: 'John',
//     lastName: 'Hancock'
//   });
// });

// User.findAll().then(users => {
//   console.log(users)
// })

// const User = sequelize.define('user', {});
// User.create({
//   lastName: 'Rambow',
//   firstName: 'John'
// }).then(john => {
//   console.log(john.get({
//     plain: true
//   }))
// })
// User.destroy({
//   where:{
//     id:2
//   }
// }).then((res)=>{
//   console.log('res:'+res);
// }).catch((err)=>{
//   console.log('err:'+err);
// })

// (async () => {
//     var res = await User.create({
//         lastName: 'Yuan',
//         firstName: 'Gaby'
//     });
//     console.log('created: ' + JSON.stringify(res));
// })();

(async () => {
    var res = await User.findAll();

    console.log('find: ' +res.length+ 'users');
    res.map((p)=>{
      console.log(JSON.stringify(p));
    })
})();

// (function * (){
//   var res = yield User.findAll();
//   console.log('find: ' +res.length+ 'users');
//   res.map((p)=>{
//     console.log(JSON.stringify(p));
//   })
// })();

// User.findAll()
//   .then((res)=>{
//     res.map((p)=>{
//       console.log(JSON.stringify(p));
//     })
//   }).catch((err)=>{
//     console.log(err);
//   })


// (*()=>{
//   var users = yield User.findAll();
//   console.log('users:'+users);

// })();


// function *testFind(){
//   console.log('test1');
//   var users = yield User.findAll({
//       where: {
//         firstName: 'John'
//       }
//   });
//   console.log('users:'+users);
//   return users;
// }
// var users = testFind();
// console.log(users);


// User.findOne().then(user => {
//   console.log(user.get('firstName'));
// });