วันอาทิตย์ที่ 13 พฤษภาคม พ.ศ. 2561

Commit 9 Nodejs Wordbucket : create sqlite3 database word and explanation table

Nodejs : Wordbucket GitHub Link

Commit 9 Nodejs Wordbucket : create sqlite3 database word and explanation table

Commits on May 1, 2018

config/config.json

- แก้ config เป็นใช้ sqlite แล้ว undo migrate และ migrate ใหม่

@@ -4,20 +4,20 @@
"password": null,
"database": "database_development",
"host": "127.0.0.1",
- "dialect": "mysql"
+ "dialect": "sqlite"
},
"test": {
"username": "root",
"password": null,
"database": "database_test",
"host": "127.0.0.1",
- "dialect": "mysql"
+ "dialect": "sqlite"
},
"production": {
"username": "root",
"password": null,
- "database": "database_production",
+ "database": "database_test",
"host": "127.0.0.1",
- "dialect": "mysql"
+ "dialect": "sqlite"
}
}

migrations/20180507184802-create-word.js

- สร้าง migration file ของตาราง Word โดยมี scema เหมือน project django ของเรา แต่ sequelize จะมี id เป็น primary key อัตโนมัติและ createdAt, updatedAt เวลาสร้างและเวลาอัพเดทอัตโนมัติ

@@ -0,0 +1,28 @@
+'use strict';
+module.exports = {
+ up: (queryInterface, Sequelize) => {
+ return queryInterface.createTable('Words', {
+ id: {
+ allowNull: false,
+ autoIncrement: true,
+ primaryKey: true,
+ type: Sequelize.INTEGER
+ },
+ word: {
+ allowNull: false,
+ type: Sequelize.STRING
+ },
+ createdAt: {
+ allowNull: false,
+ type: Sequelize.DATE
+ },
+ updatedAt: {
+ allowNull: false,
+ type: Sequelize.DATE
+ }
+ });
+ },
+ down: (queryInterface, Sequelize) => {
+ return queryInterface.dropTable('Words');
+ }
+};

migrations/20180507184836-create-explanation.js

- สร้าง migration file ของตาราง Explanation โดยมี scema เหมือน project django ของเรา แต่ sequelize จะมี id เป็น primary key อัตโนมัติและ createdAt, updatedAt เวลาสร้างและเวลาอัพเดทอัตโนมัติ และคิดว่าจะใช้ word เป็น foreinkey  references: { model: 'Word', key: 'word' } (แต่เป็นการกำหนดที่ไม่ถูกต้อง เพิ่งทราบใน commit หลังจากนี้ ซึ่งสามารถ migrate ผ่านแต่ entity ไม่มี relation เชื่อมต่อกันพอไปทดสอบใน https://sqliteonline.com/)

@@ -0,0 +1,38 @@
+'use strict';
+module.exports = {
+ up: (queryInterface, Sequelize) => {
+ return queryInterface.createTable('Explanations', {
+ id: {
+ allowNull: false,
+ autoIncrement: true,
+ primaryKey: true,
+ type: Sequelize.INTEGER
+ },
+ word: {
+ type: Sequelize.STRING,
+ references: { model: 'Word', key: 'word' }
+ },
+ explanation_text: {
+ allowNull: false,
+ type: Sequelize.STRING
+ },
+ like: {
+ type: Sequelize.INTEGER
+ },
+ dislike: {
+ type: Sequelize.INTEGER
+ },
+ createdAt: {
+ allowNull: false,
+ type: Sequelize.DATE
+ },
+ updatedAt: {
+ allowNull: false,
+ type: Sequelize.DATE
+ }
+ });
+ },
+ down: (queryInterface, Sequelize) => {
+ return queryInterface.dropTable('Explanations');
+ }
+};

models/explanation.js

- model ไว้ export ค่าต่างๆมาใช้ ตามที่เรากำหนดโดยใน ตาราง Explanation ใช้ในตอนนี้ใช้ word, explanation_text, like, dislike ได้

@@ -0,0 +1,14 @@
+'use strict';
+module.exports = (sequelize, DataTypes) => {
+ var Explanation = sequelize.define('Explanation', {
+ word: DataTypes.STRING,
+ explanation_text: DataTypes.STRING,
+ like: DataTypes.INTEGER,
+ dislike: DataTypes.INTEGER
+ }, {});
+ Explanation.associate = function(models) {
+ // associations can be defined here
+ Explanation.belongsTo(Word, {foreignKey: 'word', targetKey: 'word'});
+ };
+ return Explanation;
+};

models/word.js

- model ไว้ export ค่าต่างๆมาใช้ ตามที่เรากำหนดโดยใน ตาราง Word ใช้ในตอนนี้ใช้ word ได้

@@ -0,0 +1,11 @@
+'use strict';
+module.exports = (sequelize, DataTypes) => {
+ var Word = sequelize.define('Word', {
+ word: DataTypes.STRING
+ }, {});
+ Word.associate = function(models) {
+ // associations can be defined here
+ Word.hasMany(Explanation, {foreignKey: 'word', sourceKey: 'word'});
+ };
+ return Word;
+};



ไม่มีความคิดเห็น:

แสดงความคิดเห็น