sqlite.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. const path = require('path')
  2. const Sequelize = require('sequelize')
  3. const sequelizeCursorPagination = require('sequelize-cursor-pagination')
  4. /* Init database */
  5. const sequelize = new Sequelize('gopkg', undefined, undefined, {
  6. dialect: 'sqlite',
  7. storage: path.resolve(__dirname, '../dist/data.sqlite'),
  8. define: {
  9. timestamps: false,
  10. freezeTableName: true
  11. }
  12. })
  13. /* Create tables */
  14. const code = { type: Sequelize.STRING, primaryKey: true }
  15. const name = Sequelize.STRING
  16. const primaryKeyField = 'code'
  17. const Province = sequelize.define('province', { code, name })
  18. const City = sequelize.define('city', { code, name })
  19. const Area = sequelize.define('area', { code, name })
  20. const Street = sequelize.define('street', { code, name })
  21. const Village = sequelize.define('village', { code, name })
  22. /* With pagination */
  23. sequelizeCursorPagination({ primaryKeyField })(Province)
  24. sequelizeCursorPagination({ primaryKeyField })(City)
  25. sequelizeCursorPagination({ primaryKeyField })(Area)
  26. sequelizeCursorPagination({ primaryKeyField })(Street)
  27. sequelizeCursorPagination({ primaryKeyField })(Village)
  28. /* Set foreign key */
  29. City.belongsTo(Province)
  30. Area.belongsTo(Province)
  31. Area.belongsTo(City)
  32. Street.belongsTo(Province)
  33. Street.belongsTo(City)
  34. Street.belongsTo(Area)
  35. Village.belongsTo(Province)
  36. Village.belongsTo(City)
  37. Village.belongsTo(Area)
  38. Village.belongsTo(Street)
  39. /* Connect database */
  40. sequelize.sync()
  41. .then(() => console.log('db connected!'))
  42. .error(err => console.log(err))
  43. module.exports = { Province, City, Area, Street, Village }