# ORM

Un ORM es un modelo de programación que permite mapear las estructuras de una base de datos relacional (SQL Server, Oracle, MySQL, etc.), en adelante RDBMS (Relational Database Management System), sobre una estructura lógica de entidades con el objeto de simplificar y acelerar el desarrollo de nuestras aplicaciones.

# Sequelize


Sequelize es un ORM para Nodejs que nos permite manipular varias bases de datos SQL de una manera bastante sencilla, entre estas bases de datos podemos encontrar: mysql, sqlite, postgres, mssql.

# Instalación

sudo npm i -S pg pg-hstore sequelize
sudo npm i -D sequelize-cli 

Nota

Use -g para instalar globalmente sequelize-cli

Sequelize-cli nos sirve para ejecutar comandos del ORM en la terminal

# Configuración de Sequelize

# Crear archivo de configuracion

touch .sequelizerc

Nota

Aqui se configuran los path's para las migraciones, modelos, seeders y el config.json

const path = require('path');

module.exports = {
  'config': path.resolve('./', 'pg-config.json'),
  'migrations-path': path.resolve('./', 'pg-migrations'),
  'seeders-path': path.resolve('./', 'pg-seeders'),
  'models-path': path.resolve('./', 'pg-models')
}

# Iniciamos sequelize

sequelize init

Nota

Aqui se configura el config.json según nuestro caso

{
  "production": {
    "username": "postgres",
    "password": "postgres",
    "database": "CursoHapi",
    "host": "127.0.0.1",
    "dialect": "postgres",
    "port": "5434"
  },
  "test": {
    "username": "postgres",
    "password": "postgres",
    "database": "CursoHapitest",
    "host": "127.0.0.1",
    "dialect": "postgres",
    "port": "5434"
  },
  "development": {
    "username": "postgres",
    "password": "postgres",
    "database": "CursoHapidev",
    "host": "127.0.0.1",
    "dialect": "postgres",
    "port": "5434"
  }
}

# Creamos la base de datos

sequelize db:create --env production 

Nota

Al --env se le pasa como argumento la variable a usar del config.json

# Creamos un modelo

sequelize model:generate --name User --attributes name:string,email:string,password:string

# Ejecutamos las migraciones

sequelize db:migrate --env production

Nota

Al --env se le pasa como argumento la variable a usar del config.json