151 lines
3.4 KiB
JavaScript
151 lines
3.4 KiB
JavaScript
|
'use strict';
|
|||
|
module.exports = {
|
|||
|
async up(queryInterface, Sequelize) {
|
|||
|
// Users テーブルの作成
|
|||
|
await queryInterface.createTable('users', {
|
|||
|
id: {
|
|||
|
allowNull: false,
|
|||
|
autoIncrement: true,
|
|||
|
primaryKey: true,
|
|||
|
type: Sequelize.INTEGER
|
|||
|
},
|
|||
|
discordId: {
|
|||
|
type: Sequelize.STRING
|
|||
|
},
|
|||
|
username: {
|
|||
|
type: Sequelize.STRING
|
|||
|
},
|
|||
|
email: {
|
|||
|
type: Sequelize.STRING
|
|||
|
},
|
|||
|
isAccountSetupComplete: {
|
|||
|
type: Sequelize.BOOLEAN
|
|||
|
},
|
|||
|
createdAt: {
|
|||
|
allowNull: false,
|
|||
|
type: Sequelize.DATE
|
|||
|
},
|
|||
|
updatedAt: {
|
|||
|
allowNull: false,
|
|||
|
type: Sequelize.DATE
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
// Isotopesテーブルの作成(Botsからリネーム)
|
|||
|
await queryInterface.createTable('isotopes', {
|
|||
|
id: {
|
|||
|
allowNull: false,
|
|||
|
autoIncrement: true,
|
|||
|
primaryKey: true,
|
|||
|
type: Sequelize.BIGINT
|
|||
|
},
|
|||
|
name: {
|
|||
|
type: Sequelize.STRING,
|
|||
|
allowNull: false
|
|||
|
},
|
|||
|
user_id: {
|
|||
|
type: Sequelize.BIGINT,
|
|||
|
allowNull: false,
|
|||
|
references: {
|
|||
|
model: 'users',
|
|||
|
key: 'id'
|
|||
|
},
|
|||
|
onDelete: 'CASCADE'
|
|||
|
},
|
|||
|
first_person: {
|
|||
|
type: Sequelize.STRING,
|
|||
|
allowNull: false,
|
|||
|
defaultValue: 'ワタシ'
|
|||
|
},
|
|||
|
personality: {
|
|||
|
type: Sequelize.STRING,
|
|||
|
allowNull: true
|
|||
|
},
|
|||
|
tone: {
|
|||
|
type: Sequelize.STRING,
|
|||
|
allowNull: true
|
|||
|
},
|
|||
|
background_story: {
|
|||
|
type: Sequelize.TEXT,
|
|||
|
allowNull: true
|
|||
|
},
|
|||
|
likes: {
|
|||
|
type: Sequelize.STRING,
|
|||
|
allowNull: true
|
|||
|
},
|
|||
|
dislikes: {
|
|||
|
type: Sequelize.STRING,
|
|||
|
allowNull: true
|
|||
|
},
|
|||
|
created_at: {
|
|||
|
allowNull: false,
|
|||
|
type: Sequelize.DATE,
|
|||
|
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP')
|
|||
|
},
|
|||
|
updated_at: {
|
|||
|
allowNull: false,
|
|||
|
type: Sequelize.DATE,
|
|||
|
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP')
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
// ChatMessages テーブルの作成
|
|||
|
await queryInterface.createTable('chat_messages', {
|
|||
|
id: {
|
|||
|
allowNull: false,
|
|||
|
autoIncrement: true,
|
|||
|
primaryKey: true,
|
|||
|
type: Sequelize.BIGINT
|
|||
|
},
|
|||
|
user_id: {
|
|||
|
type: Sequelize.BIGINT,
|
|||
|
allowNull: false,
|
|||
|
references: {
|
|||
|
model: 'users',
|
|||
|
key: 'id'
|
|||
|
},
|
|||
|
onDelete: 'CASCADE'
|
|||
|
},
|
|||
|
isotope_id: {
|
|||
|
type: Sequelize.BIGINT,
|
|||
|
allowNull: false,
|
|||
|
references: {
|
|||
|
model: 'isotopes',
|
|||
|
key: 'id'
|
|||
|
},
|
|||
|
onDelete: 'CASCADE'
|
|||
|
},
|
|||
|
role: {
|
|||
|
type: Sequelize.ENUM('user', 'assistant'),
|
|||
|
allowNull: false,
|
|||
|
defaultValue: 'user'
|
|||
|
},
|
|||
|
message: {
|
|||
|
type: Sequelize.TEXT,
|
|||
|
allowNull: false
|
|||
|
},
|
|||
|
created_at: {
|
|||
|
allowNull: false,
|
|||
|
type: Sequelize.DATE,
|
|||
|
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP')
|
|||
|
},
|
|||
|
updated_at: {
|
|||
|
allowNull: false,
|
|||
|
type: Sequelize.DATE,
|
|||
|
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP')
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
|
|||
|
async down(queryInterface, Sequelize) {
|
|||
|
// ChatMessages テーブルの削除
|
|||
|
await queryInterface.dropTable('chat_messages');
|
|||
|
|
|||
|
// Isotopes テーブルの削除
|
|||
|
await queryInterface.dropTable('isotopes');
|
|||
|
|
|||
|
// Users テーブルの削除
|
|||
|
await queryInterface.dropTable('Users');
|
|||
|
}
|
|||
|
};
|