diff --git a/package.json b/package.json index 2a222a8..68f1a39 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "license": "MIT", "scripts": { "undomigrate": "babel-node node_modules/.bin/sequelize db:migrate:undo:all", + "seed": "babel-node node_modules/.bin/sequelize db:seed:all", "migrate": "npm run undomigrate && babel-node node_modules/.bin/sequelize db:migrate", "dev": "nodemon --exec babel-node ./src/index.js", "clean": "rm -rf build && mkdir build", diff --git a/src/db/config/config.js b/src/db/config/config.js index c012821..184bdfa 100644 --- a/src/db/config/config.js +++ b/src/db/config/config.js @@ -5,15 +5,14 @@ dotenv.config(); module.exports = { development: { url: process.env.DATABASE_URL_DEV, - dialect: 'postgres', + logging: false, }, test: { url: process.env.DATABASE_URL_TEST, - dialect: 'postgres', + logging: true, }, production: { url: process.env.DATABASE_URL, - dialect: 'postgres', ssl: true, dialectOptions: { ssl: true, diff --git a/src/db/migrations/.gitKeep b/src/db/migrations/.gitKeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/db/migrations/20190724104333-create-user.js b/src/db/migrations/20190724104333-create-user.js new file mode 100644 index 0000000..f8f765f --- /dev/null +++ b/src/db/migrations/20190724104333-create-user.js @@ -0,0 +1,40 @@ +export default { + up: (queryInterface, Sequelize) => queryInterface.createTable('Users', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER, + }, + firstName: { + type: Sequelize.STRING, + allowNull: false, + }, + lastName: { + type: Sequelize.STRING, + allowNull: false, + }, + email: { + type: Sequelize.STRING, + allowNull: false, + }, + password: { + type: Sequelize.STRING, + allowNull: false, + }, + isAdmin: { + type: Sequelize.BOOLEAN, + defaultValue: false, + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.fn('now'), + }, + updatedAt: { + allowNull: true, + type: Sequelize.DATE, + }, + }), + down: queryInterface => queryInterface.dropTable('Users'), +}; diff --git a/src/db/migrations/20190724105152-create-bus.js b/src/db/migrations/20190724105152-create-bus.js new file mode 100644 index 0000000..21f6d5b --- /dev/null +++ b/src/db/migrations/20190724105152-create-bus.js @@ -0,0 +1,39 @@ + +export default { + up: (queryInterface, Sequelize) => queryInterface.createTable('Buses', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER, + }, + numberPlate: { + type: Sequelize.STRING, + allowNull: false, + }, + manufacturer: { + type: Sequelize.STRING, + }, + model: { + type: Sequelize.STRING, + allowNull: false, + }, + year: { + type: Sequelize.STRING, + }, + capacity: { + type: Sequelize.INTEGER, + allowNull: false, + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.fn('now'), + }, + updatedAt: { + allowNull: true, + type: Sequelize.DATE, + }, + }), + down: queryInterface => queryInterface.dropTable('Buses'), +}; diff --git a/src/db/migrations/20190724105744-create-trip.js b/src/db/migrations/20190724105744-create-trip.js new file mode 100644 index 0000000..18c3268 --- /dev/null +++ b/src/db/migrations/20190724105744-create-trip.js @@ -0,0 +1,47 @@ +export default { + up: (queryInterface, Sequelize) => queryInterface.createTable('Trips', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER, + }, + busId: { + type: Sequelize.INTEGER, + allowNull: false, + references: { + model: 'Buses', + key: 'id', + }, + }, + origin: { + type: Sequelize.STRING, + allowNull: false, + }, + destination: { + type: Sequelize.STRING, + allowNull: false, + }, + tripDate: { + type: Sequelize.DATE, + allowNull: false, + }, + fare: { + type: Sequelize.FLOAT, + allowNull: false, + }, + status: { + type: Sequelize.FLOAT, + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.fn('now'), + }, + updatedAt: { + allowNull: true, + type: Sequelize.DATE, + }, + }), + down: queryInterface => queryInterface.dropTable('Trips'), +}; diff --git a/src/db/migrations/20190724105907-create-booking.js b/src/db/migrations/20190724105907-create-booking.js new file mode 100644 index 0000000..f3f219c --- /dev/null +++ b/src/db/migrations/20190724105907-create-booking.js @@ -0,0 +1,36 @@ +export default { + up: (queryInterface, Sequelize) => queryInterface.createTable('Bookings', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER, + }, + tripId: { + type: Sequelize.INTEGER, + allowNull: false, + references: { + model: 'Trips', + key: 'id', + }, + }, + userId: { + type: Sequelize.INTEGER, + allowNull: false, + references: { + model: 'Users', + key: 'id', + }, + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.fn('now'), + }, + updatedAt: { + allowNull: true, + type: Sequelize.DATE, + }, + }), + down: queryInterface => queryInterface.dropTable('Bookings'), +}; diff --git a/src/db/models/booking.js b/src/db/models/booking.js new file mode 100644 index 0000000..ca4188d --- /dev/null +++ b/src/db/models/booking.js @@ -0,0 +1,7 @@ +export default (sequelize, DataTypes) => { + const Booking = sequelize.define('Booking', { + tripId: DataTypes.INTEGER, + userId: DataTypes.INTEGER, + }, {}); + return Booking; +}; diff --git a/src/db/models/bus.js b/src/db/models/bus.js new file mode 100644 index 0000000..f6cf090 --- /dev/null +++ b/src/db/models/bus.js @@ -0,0 +1,10 @@ +export default (sequelize, DataTypes) => { + const Bus = sequelize.define('Bus', { + numberPlate: DataTypes.STRING, + manufacturer: DataTypes.STRING, + model: DataTypes.STRING, + year: DataTypes.STRING, + capacity: DataTypes.INTEGER, + }, {}); + return Bus; +}; diff --git a/src/db/models/trip.js b/src/db/models/trip.js new file mode 100644 index 0000000..979a189 --- /dev/null +++ b/src/db/models/trip.js @@ -0,0 +1,11 @@ +export default (sequelize, DataTypes) => { + const Trip = sequelize.define('Trip', { + busId: DataTypes.INTEGER, + origin: DataTypes.STRING, + destination: DataTypes.STRING, + tripDate: DataTypes.DATE, + fare: DataTypes.FLOAT, + status: DataTypes.FLOAT, + }, {}); + return Trip; +}; diff --git a/src/db/models/user.js b/src/db/models/user.js new file mode 100644 index 0000000..6e86b3c --- /dev/null +++ b/src/db/models/user.js @@ -0,0 +1,10 @@ +export default (sequelize, DataTypes) => { + const User = sequelize.define('User', { + firstName: DataTypes.STRING, + lastName: DataTypes.STRING, + email: DataTypes.STRING, + password: DataTypes.STRING, + isAdmin: DataTypes.BOOLEAN, + }, {}); + return User; +}; diff --git a/src/db/seeders/.gitKeep b/src/db/seeders/.gitKeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/db/seeders/20190724111907-users.js b/src/db/seeders/20190724111907-users.js new file mode 100644 index 0000000..79f5ddc --- /dev/null +++ b/src/db/seeders/20190724111907-users.js @@ -0,0 +1,10 @@ +export default { + up: queryInterface => queryInterface.bulkInsert('Users', [{ + firstName: 'John', + lastName: 'Doe', + email: 'demo@demo.com', + password: 'password', + }], {}), + + down: queryInterface => queryInterface.bulkDelete('Users', null, {}), +};