Full Stack Challenge Part 2 | Migrations

1 min read


Kita lanjut ke part 2 disini kita langsung membuat file index.js nya.. Jadi jika kalian menggunakan vscode bisa langsung dibuka folder project nya….

oke jadi knex ini skemanya mirip laravel ya, jadi untuk kalina yang terbiasa dengan command menggunakan laravel maka tidak begitu sulit menggunakan knex.. Kali ini kita akan coba membuat koneksi kedatabase postgres dan membuat migration dengan seeds…

{
  "name": "objection_knex",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "migrate": "npx knex migrate:latest --knexfile ./db/knexfile.js",
    "script": "nodemon index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1",
    "knex": "^0.95.12",
    "objection": "^2.2.17",
    "pg": "^8.7.1"
  },
  "devDependencies": {
    "nodemon": "^2.0.14"
  }
}

oke jadi untuk package.json akan terlihat seperti diatas, kita edit dibagian script dengan menggunakan nodemon dan call function untuk migrate nya…

mkdir db
cd db
mkdir migrations seeds

Jadi kita akan membuat sebuah folder untuk menempatkan konfigurasi dari migrations datanya.. setelah itu :

cd ..
npx knex init
npx knex migrate:make init

command diatas adalah untuk generate file migrationsnya sehingga nantinya akan ada file knexfile.js.. kita edit filenya

// Update with your config settings.

const {knexSnakeCaseMappers} = require('objection')

module.exports = {
  development: {
    client: 'postgresql',
    connection: {
      database: 'objection_tutorial',
      user:     'postgres',
      password: 'postgres'
    },
    pool: {
      min: 2,
      max: 10
    },
    migrations: {
      tableName: 'knex_migrations'
    },
    seeds: {
      directory: './seeds',
    },
    ...knexSnakeCaseMappers,
  },
};

dan pindahkan file migrations kedalam folder db/migrations dan edit filenya..


exports.up = function(knex) {
  return knex.schema.createTable('channel', (table) => {
      table.increments();
      table.string('name').notNullable();
      table.timestamps(true,true);
  }).createTable('user', (table) => {
      table.increments();
      table.string('name').notNullable();
      table.string('email').notNullable().unique();
      table.integer('channelId').references('id').inTable('channel');
      table.timestamps(true, true);
  }).createTable('vide', (table) => {
    table.increments();
    table.string('title').notNullable();
    table.integer('channelId').notNullable().references().inTable('channel');
    table.timestamps(true, true);
  })
};

exports.down = function(knex) {
  return knex.schema.dropTableIfExists('post')
  .dropTableIfExists('user')
  .dropTableIfExists('channel');
};

oke cukup untuk code diatas,, sekarang kita test migrationsnya..

npm run migrate

jika berhasil maka akan seperti ini …

objection_knex@1.0.0 migrate /home/laughface809/Documents/FullStack/objection_knex
npx knex migrate:latest –knexfile ./db/knexfile.js

Working directory changed to ~/Documents/FullStack/objection_knex/db

Using environment: development

Batch 1 run: 1 migrations

Dan struktur folder akan seperti ini …

.
├── db
│   ├── migrations
│   └── seeds
└── node_modules

oke sekarang masuk ke pgadmin dan di bagian schema, public dan tables akan ada hasil migrations-nya…

cukup sekian dulu,, kita lanjut di part 3 cyaaa….

Bima Sena

Leave a Reply

Your email address will not be published. Required fields are marked *