db.test.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. const Sequelize = require('sequelize');
  2. const path = require('path')
  3. const sequelize = new Sequelize({
  4. dialect: 'sqlite',
  5. storage: path.resolve('/Users/drew/Library/Application Support/Electron', 'db', 'application.db')
  6. });
  7. const Model = Sequelize.Model;
  8. class Order extends Model { }
  9. Order.init({
  10. orderId: {
  11. type: Sequelize.INTEGER,
  12. allowNull: false,
  13. unique: true
  14. },
  15. path: {
  16. type: Sequelize.STRING,
  17. allowNull: false
  18. },
  19. name: {
  20. type: Sequelize.STRING,
  21. allowNull: false
  22. }
  23. }, { sequelize })
  24. class SubOrder extends Model { }
  25. SubOrder.init({
  26. orderId: {
  27. type: Sequelize.INTEGER,
  28. allowNull: false
  29. },
  30. parentId: {
  31. type: Sequelize.INTEGER,
  32. allowNull: false
  33. },
  34. path: {
  35. type: Sequelize.STRING,
  36. allowNull: false
  37. },
  38. name: {
  39. type: Sequelize.STRING,
  40. allowNull: false
  41. }
  42. }, { sequelize })
  43. class File extends Model { }
  44. File.init({
  45. orderId: {
  46. type: Sequelize.INTEGER,
  47. allowNull: false
  48. },
  49. subOrderId: {
  50. type: Sequelize.INTEGER,
  51. allowNull: false
  52. },
  53. src: {
  54. type: Sequelize.STRING,
  55. allowNull: false
  56. },
  57. dst: {
  58. type: Sequelize.STRING,
  59. allowNull: false
  60. },
  61. size: {
  62. type: Sequelize.BIGINT(19),
  63. defaultValue: 0,
  64. },
  65. uploaded: {
  66. type: Sequelize.BIGINT(19),
  67. defaultValue: 0,
  68. },
  69. progress: {
  70. type: Sequelize.DOUBLE,
  71. defaultValue: 0,
  72. },
  73. checkPoint: Sequelize.TEXT,
  74. status: {
  75. type: Sequelize.INTEGER,
  76. defaultValue: 0,
  77. }
  78. }, { sequelize })
  79. async function t() {
  80. // for (let i = 0; i < 10; i++) {
  81. // await sequelize.sync()
  82. // let res = (await File.create({
  83. // orderId: 1,
  84. // subOrderId: 2,
  85. // src: '123',
  86. // dst: '345', size: 100000000000,
  87. // progress: 0.01
  88. // })).get()
  89. // console.log(res)
  90. // await File.update({ uploaded: parseInt(Math.random() * 10000) }, {
  91. // where: {
  92. // id: res.id
  93. // }
  94. // })
  95. // }
  96. let res = (await sequelize
  97. .query('SELECT * FROM Orders WHERE orderId IN (SELECT orderId FROM Files WHERE status != 4 GROUP BY orderId)', {
  98. model: Order,
  99. mapToModel: true
  100. })).map(i => i.get())
  101. console.log(res)
  102. }
  103. t()