sqlite.js 1.7 KB

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