diff --git a/README.md b/README.md index 861d76c..90ac910 100644 --- a/README.md +++ b/README.md @@ -21,64 +21,5 @@ install pg MacOS - knex for migration files npx knex migrate:make create_addresses_table - npx knex migrate:latest - npx knex migrate:rollback - - npx knex seed:make 01_addresses - npx knex seed:run - - npx knex migrate:make create_addresses_table - npx knex migrate:latest - npx knex migrate:rollback - - npx knex seed:make 01_addresses - npx knex seed:run - - npx knex migrate:make create_addresses_table - npx knex migrate:latest - npx knex migrate:rollback - - npx knex seed:make 01_addresses - npx knex seed:run - - npx knex migrate:make create_addresses_table - npx knex migrate:latest - npx knex migrate:rollback - - npx knex seed:make 01_addresses - npx knex seed:run - - npx knex migrate:make create_addresses_table - npx knex migrate:latest - npx knex migrate:rollback - - npx knex seed:make 01_addresses - npx knex seed:run - - npx knex migrate:make create_addresses_table - npx knex migrate:latest - npx knex migrate:rollback - - npx knex seed:make 01_addresses - npx knex seed:run - - npx knex migrate:make create_addresses_table - npx knex migrate:latest - npx knex migrate:rollback - - npx knex seed:make 01_addresses - npx knex seed:run - - npx knex migrate:make create_addresses_table - npx knex migrate:latest - npx knex migrate:rollback - - npx knex seed:make 01_addresses - npx knex seed:run - - npx knex migrate:make create_addresses_table - npx knex migrate:latest - npx knex migrate:rollback - - npx knex seed:make 01_addresses - npx knex seed:run + npx knex migrate:latest --env development + npx knex migrate:rollback --env development \ No newline at end of file diff --git a/knexfile.js b/knexfile.js new file mode 100644 index 0000000..c4a8dd0 --- /dev/null +++ b/knexfile.js @@ -0,0 +1,20 @@ + +const env = require('dotenv').config(); + + +module.exports = { + development: { + client: 'postgresql', + connection: { + database: env.parsed.PGDATABASENAME, + user: env.parsed.PGUSER, + password: env.parsed.PGPASSWORD + }, + migrations: { + directory: './src/migrations' + }, + seeds: { + directory: './src/seeds' + } + } +} diff --git a/src/migrations/20230424234230_create_timeslots_table.js b/src/migrations/20230424234230_create_timeslots_table.js new file mode 100644 index 0000000..2c38688 --- /dev/null +++ b/src/migrations/20230424234230_create_timeslots_table.js @@ -0,0 +1,13 @@ +exports.up = function(knex) { + return knex.schema.createTable('timeslots', function(table) { + table.increments('id').primary(); + table.timestamp('start_time').notNullable(); + table.timestamp('end_time').notNullable(); + table.boolean('is_reserved').notNullable().defaultTo(false); + table.timestamps(true, true); + }); +}; + +exports.down = function(knex) { + return knex.schema.dropTable('timeslots'); +}; \ No newline at end of file diff --git a/src/seed/load-data.js b/src/seed/load-data.js new file mode 100644 index 0000000..3d9b7fd --- /dev/null +++ b/src/seed/load-data.js @@ -0,0 +1,30 @@ +exports.seed = async function(knex) { + // Delete all existing data from the tables + // check is table exists first + const hasTable = await knex.schema.hasTable('timeslots'); + if (hasTable) { + await knex('timeslots').del(); + } + + + + // Load data from the JSON files + const holidays = require('../data/holidays.json'); + const timeslots = require('../data/timeslots.json'); + + // Insert the holiday dates into the holidays table + for (const date of holidays) { + await knex('holidays').insert({ date }); + } + + // Insert the time slots into the timeslots table + for (const { date, slots } of timeslots) { + for (const slot of slots) { + await knex('timeslots').insert({ + date, + start_time: slot.start_time, + end_time: slot.end_time + }); + } + } +};