sqlite.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. logging: false,
  9. define: {
  10. timestamps: false,
  11. freezeTableName: true
  12. }
  13. })
  14. /* Create tables */
  15. const code = { type: Sequelize.STRING, primaryKey: true }
  16. const name = Sequelize.STRING
  17. const primaryKeyField = 'code'
  18. const Province = sequelize.define('province', { code, name })
  19. const City = sequelize.define('city', { code, name })
  20. const Area = sequelize.define('area', { code, name })
  21. const Street = sequelize.define('street', { code, name })
  22. const Village = sequelize.define('village', { code, name })
  23. /* With pagination */
  24. sequelizeCursorPagination({ primaryKeyField })(Province)
  25. sequelizeCursorPagination({ primaryKeyField })(City)
  26. sequelizeCursorPagination({ primaryKeyField })(Area)
  27. sequelizeCursorPagination({ primaryKeyField })(Street)
  28. sequelizeCursorPagination({ primaryKeyField })(Village)
  29. /* Set foreign key */
  30. City.belongsTo(Province)
  31. Area.belongsTo(Province)
  32. Area.belongsTo(City)
  33. Street.belongsTo(Province)
  34. Street.belongsTo(City)
  35. Street.belongsTo(Area)
  36. Village.belongsTo(Province)
  37. Village.belongsTo(City)
  38. Village.belongsTo(Area)
  39. Village.belongsTo(Street)
  40. /* Connect database */
  41. async function init () {
  42. try {
  43. await sequelize.sync()
  44. console.log('db connected!')
  45. } catch (err) {
  46. console.log(err)
  47. process.exit(-1)
  48. }
  49. }
  50. module.exports = { init, Province, City, Area, Street, Village }