Guest User

Untitled

a guest
Oct 15th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. const moment = require('moment');
  2. const _ = require('lodash');
  3. const Promise = require('bluebird');
  4. const knex = require('knex')({
  5. client: 'pg',
  6. version: '9.6',
  7. connection: {
  8. user: 'postgres',
  9. password: '',
  10. database: 'bookshelf-test',
  11. },
  12. });
  13. const bookshelf = require('bookshelf')(knex);
  14.  
  15. // Datetime conversion plugin
  16. const datetimePlugin = bookshelf => {
  17. bookshelf.Model = bookshelf.Model.extend({
  18. parse: attrs => {
  19. const data = _.mapValues(attrs, (val, key) => {
  20. if (key === 'updated_at' || key === 'created_at') {
  21. return moment(val).valueOf();
  22. }
  23. return val;
  24. });
  25. return data;
  26. },
  27. });
  28. };
  29.  
  30. bookshelf.plugin(['registry', datetimePlugin]);
  31.  
  32. // Models
  33. const UserModel = bookshelf.Model.extend({
  34. tableName: 'users',
  35. hasTimestamps: true,
  36. });
  37.  
  38. Promise.all([
  39. knex.schema.hasTable('users', exists => {
  40. console.log(exists);
  41. if (!exists) {
  42. return knex.schema.createTable('users', table => {
  43. table.increments();
  44. table.string('name');
  45. table.timestamps(true, true);
  46. });
  47. }
  48. }),
  49. ])
  50. .then(() => {
  51. return [
  52. knex('users').insert({ name: 'John' }),
  53. knex('users').insert({ name: 'Jen' }),
  54. knex('users').insert({ name: 'Jimmy' }),
  55. ];
  56. })
  57. .spread(() => {
  58. return UserModel.fetchAll();
  59. })
  60. .then(users => {
  61. console.log(users.toJSON());
  62. })
  63. .then(() => {
  64. console.log('All done!');
  65. })
  66. .catch(error => {
  67. console.log(error);
  68. })
  69. .finally(() => {
  70. process.exit();
  71. });
Add Comment
Please, Sign In to add comment