You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.7 KiB
71 lines
1.7 KiB
const path = require('path')
|
|
|
|
const Sequelize = require('sequelize')
|
|
const sequelizeCursorPagination = require('sequelize-cursor-pagination')
|
|
|
|
/* Init database */
|
|
|
|
const sequelize = new Sequelize('gopkg', undefined, undefined, {
|
|
dialect: 'sqlite',
|
|
storage: path.resolve(__dirname, '../dist/data.sqlite'),
|
|
// operatorsAliases: Sequelize.Op,
|
|
logging: false,
|
|
define: {
|
|
timestamps: false,
|
|
freezeTableName: true
|
|
}
|
|
})
|
|
|
|
/* Create tables */
|
|
|
|
const code = { type: Sequelize.STRING, primaryKey: true }
|
|
const name = Sequelize.STRING
|
|
const primaryKeyField = 'code'
|
|
|
|
const Province = sequelize.define('province', { code, name })
|
|
const City = sequelize.define('city', { code, name })
|
|
const Area = sequelize.define('area', { code, name })
|
|
const Street = sequelize.define('street', { code, name })
|
|
const Village = sequelize.define('village', { code, name })
|
|
|
|
/* With pagination */
|
|
|
|
sequelizeCursorPagination({ primaryKeyField })(Province)
|
|
sequelizeCursorPagination({ primaryKeyField })(City)
|
|
sequelizeCursorPagination({ primaryKeyField })(Area)
|
|
sequelizeCursorPagination({ primaryKeyField })(Street)
|
|
sequelizeCursorPagination({ primaryKeyField })(Village)
|
|
|
|
/* Set foreign key */
|
|
|
|
Province.hasMany(City)
|
|
|
|
City.belongsTo(Province)
|
|
City.hasMany(Area)
|
|
|
|
Area.belongsTo(Province)
|
|
Area.belongsTo(City)
|
|
Area.hasMany(Street)
|
|
|
|
Street.belongsTo(Province)
|
|
Street.belongsTo(City)
|
|
Street.belongsTo(Area)
|
|
Street.hasMany(Village)
|
|
|
|
Village.belongsTo(Province)
|
|
Village.belongsTo(City)
|
|
Village.belongsTo(Area)
|
|
Village.belongsTo(Street)
|
|
|
|
/* Connect database */
|
|
|
|
async function init () {
|
|
try {
|
|
await sequelize.sync()
|
|
} catch (err) {
|
|
console.log(err)
|
|
process.exit(-1)
|
|
}
|
|
}
|
|
|
|
module.exports = { init, Province, City, Area, Street, Village }
|
|
|