From f49b7fad08e045e47fb3cc270c853c549050fb00 Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Fri, 6 Jun 2025 15:07:10 +0200 Subject: [PATCH] more db stuff --- .sequelizerc | 6 ++++ src/back/buildApp.js | 2 +- src/back/{db.js => database/config.js} | 16 +++------ src/back/database/db.js | 13 +++++++ src/back/database/migrations.js | 49 ++++++++++++++++++++++++++ 5 files changed, 74 insertions(+), 12 deletions(-) create mode 100644 .sequelizerc rename src/back/{db.js => database/config.js} (61%) create mode 100644 src/back/database/db.js create mode 100644 src/back/database/migrations.js diff --git a/.sequelizerc b/.sequelizerc new file mode 100644 index 0000000..07a8bfe --- /dev/null +++ b/.sequelizerc @@ -0,0 +1,6 @@ +const path = require("path"); + +module.exports = { + config: path.resolve("src", "back", "database", "config.js"), + "migrations-path": path.resolve("src", "back", "database", "migrations"), +}; diff --git a/src/back/buildApp.js b/src/back/buildApp.js index 00d0868..456bac3 100644 --- a/src/back/buildApp.js +++ b/src/back/buildApp.js @@ -1,5 +1,5 @@ const CONSTANTS = require("./constants"); -const { getDb } = require("./db"); +const { getDb } = require("./database/db"); const buildApp = () => { const db = getDb(); diff --git a/src/back/db.js b/src/back/database/config.js similarity index 61% rename from src/back/db.js rename to src/back/database/config.js index 0f669b6..789df74 100644 --- a/src/back/db.js +++ b/src/back/database/config.js @@ -1,15 +1,13 @@ -const { Sequelize } = require("sequelize"); const dotenv = require("dotenv"); - -const CONSTANTS = require("./constants"); +const CONSTANTS = require("../constants"); dotenv.config(); -const getDb = () => { - const sequelize = new Sequelize({ +module.exports = { + development: { dialect: CONSTANTS.DB_ENGINE, host: process.env.POSTGRES_HOST, - port: process.env.POSTGRES_PORT, + port: process.env.POSTGRES_PORT, database: process.env.POSTGRES_DB, username: process.env.POSTGRES_USER, password: process.env.POSTGRES_PASSWORD, @@ -19,9 +17,5 @@ const getDb = () => { underscored: true, quoteIdentifiers: false, }, - }); - - return sequelize; + }, }; - -module.exports = {getDb}; diff --git a/src/back/database/db.js b/src/back/database/db.js new file mode 100644 index 0000000..f9bf8cd --- /dev/null +++ b/src/back/database/db.js @@ -0,0 +1,13 @@ +const { Sequelize } = require("sequelize"); +const dotenv = require("dotenv"); +const config = require("./config"); + +dotenv.config(); + +const getDb = () => { + const sequelize = new Sequelize(config.development); + + return sequelize; +}; + +module.exports = { getDb }; diff --git a/src/back/database/migrations.js b/src/back/database/migrations.js new file mode 100644 index 0000000..d2cd4e0 --- /dev/null +++ b/src/back/database/migrations.js @@ -0,0 +1,49 @@ +"use strict"; + +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.sequelize.transaction((t) => { + return Promise.all([ + queryInterface.createTable( + "hello_world", + { + first_name: { + type: Sequelize.STRING, + allowNull: false, + unique: true, + primaryKey: true, + }, + last_name: { + type: Sequelize.STRING, + allowNull: false, + }, + created_at: { + type: Sequelize.DATE, + allowNull: false, + }, + }, + { transaction: t } + ), + queryInterface.bulkInsert( + "hello_world", + [ + { + first_name: "John", + last_name: "Doe", + created_at: new Date(), + }, + { + first_name: "Jane", + last_name: "Smith", + created_at: new Date(), + }, + ], + { transaction: t } + ), + ]); + }); + }, + down: (queryInterface, Sequelize) => { + return queryInterface.dropTable("hello_world"); + }, +};